New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
end.hpp in vendors/XIOS/current/extern/boost/include/boost/range – NEMO

source: vendors/XIOS/current/extern/boost/include/boost/range/end.hpp @ 3428

Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

File size: 3.3 KB
Line 
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) && (_MSC_VER >= 1200)
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
28namespace boost
29{
30
31#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
32    !BOOST_WORKAROUND(__GNUC__, < 3) \
33    /**/
34namespace range_detail
35{
36#endif
37
38        //////////////////////////////////////////////////////////////////////
39        // primary template
40        //////////////////////////////////////////////////////////////////////
41        template< typename C >
42        inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
43        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            return c.end();
51        }
52
53        //////////////////////////////////////////////////////////////////////
54        // pair
55        //////////////////////////////////////////////////////////////////////
56
57        template< typename Iterator >
58        inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
59        {
60            return p.second;
61        }
62
63        template< typename Iterator >
64        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        inline const T* range_end( const T (&a)[sz] )
75        {
76            return range_detail::array_end<T,sz>( a );
77        }
78
79        template< typename T, std::size_t sz >
80        inline T* range_end( T (&a)[sz] )
81        {
82            return range_detail::array_end<T,sz>( a );
83        }
84
85#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
86    !BOOST_WORKAROUND(__GNUC__, < 3) \
87    /**/
88} // namespace 'range_detail'
89#endif
90
91template< class T >
92inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
93{
94#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
95    !BOOST_WORKAROUND(__GNUC__, < 3) \
96    /**/
97    using namespace range_detail;
98#endif
99    return range_end( r );
100}
101
102template< class T >
103inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
104{
105#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
106    !BOOST_WORKAROUND(__GNUC__, < 3) \
107    /**/
108    using namespace range_detail;
109#endif
110    return range_end( r );
111}
112
113} // namespace 'boost'
114
115
116
117#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
118
119
120namespace boost
121{
122    template< class T >
123    inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
124    const_end( const T& r )
125    {
126        return boost::end( r );
127    }
128}
129
130#endif
131
Note: See TracBrowser for help on using the repository browser.