LCOV - code coverage report
Current view: top level - usr/include/boost/range - end.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 6 7 85.7 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Boost.Range library
       2             : //
       3             : //  Copyright Thorsten Ottosen 2003-2004. Use, modification and
       4             : //  distribution is subject to the Boost Software License, Version
       5             : //  1.0. (See accompanying file LICENSE_1_0.txt or copy at
       6             : //  http://www.boost.org/LICENSE_1_0.txt)
       7             : //
       8             : // For more information, see http://www.boost.org/libs/range/
       9             : //
      10             : 
      11             : #ifndef BOOST_RANGE_END_HPP
      12             : #define BOOST_RANGE_END_HPP
      13             : 
      14             : #if defined(_MSC_VER)
      15             : # pragma once
      16             : #endif
      17             : 
      18             : #include <boost/range/config.hpp>
      19             : 
      20             : #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
      21             : #include <boost/range/detail/end.hpp>
      22             : #else
      23             : 
      24             : #include <boost/range/detail/implementation_help.hpp>
      25             : #include <boost/range/iterator.hpp>
      26             : #include <boost/range/const_iterator.hpp>
      27             : #include <boost/config.hpp>
      28             : #include <boost/config/workaround.hpp>
      29             : 
      30             : namespace boost
      31             : {
      32             : 
      33             : #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
      34             : namespace range_detail
      35             : {
      36             : #endif
      37             : 
      38             :         //////////////////////////////////////////////////////////////////////
      39             :         // primary template
      40             :         //////////////////////////////////////////////////////////////////////
      41             :         template< typename C >
      42             :         BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
      43      422149 :         range_end( C& c )
      44             :         {
      45             :             //
      46             :             // If you get a compile-error here, it is most likely because
      47             :             // you have not implemented range_begin() properly in
      48             :             // the namespace of C
      49             :             //
      50      421077 :             return c.end();
      51             :         }
      52             : 
      53             :         //////////////////////////////////////////////////////////////////////
      54             :         // pair
      55             :         //////////////////////////////////////////////////////////////////////
      56             : 
      57             :         template< typename Iterator >
      58           0 :         BOOST_CONSTEXPR inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
      59             :         {
      60             :             return p.second;
      61             :         }
      62             : 
      63             :         template< typename Iterator >
      64             :         BOOST_CONSTEXPR inline Iterator range_end( std::pair<Iterator,Iterator>& p )
      65             :         {
      66             :             return p.second;
      67             :         }
      68             : 
      69             :         //////////////////////////////////////////////////////////////////////
      70             :         // array
      71             :         //////////////////////////////////////////////////////////////////////
      72             : 
      73             :         template< typename T, std::size_t sz >
      74             :         BOOST_CONSTEXPR inline const T* range_end( const T (&a)[sz] ) BOOST_NOEXCEPT
      75             :         {
      76             :             return range_detail::array_end<T,sz>( a );
      77             :         }
      78             : 
      79             :         template< typename T, std::size_t sz >
      80             :         BOOST_CONSTEXPR inline T* range_end( T (&a)[sz] ) BOOST_NOEXCEPT
      81             :         {
      82             :             return range_detail::array_end<T,sz>( a );
      83             :         }
      84             : 
      85             : #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
      86             : } // namespace 'range_detail'
      87             : #endif
      88             : 
      89             : namespace range_adl_barrier
      90             : {
      91             : 
      92             : template< class T >
      93             : #if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
      94             : BOOST_CONSTEXPR
      95             : #endif
      96      279484 : inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
      97             : {
      98             : #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
      99             :     using namespace range_detail;
     100             : #endif
     101      279484 :     return range_end( r );
     102             : }
     103             : 
     104             : template< class T >
     105             : #if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
     106             : BOOST_CONSTEXPR
     107             : #endif
     108      337303 : inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
     109             : {
     110             : #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
     111             :     using namespace range_detail;
     112             : #endif
     113      337303 :     return range_end( r );
     114             : }
     115             : 
     116             :     } // namespace range_adl_barrier
     117             : } // namespace 'boost'
     118             : 
     119             : #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
     120             : 
     121             : namespace boost
     122             : {
     123             :     namespace range_adl_barrier
     124             :     {
     125             :         template< class T >
     126             :         BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
     127             :         const_end( const T& r )
     128             :         {
     129             :             return boost::range_adl_barrier::end( r );
     130             :         }
     131             :     } // namespace range_adl_barrier
     132             :     using namespace range_adl_barrier;
     133             : } // namespace boost
     134             : 
     135             : #endif
     136             : 

Generated by: LCOV version 1.14