diff options
Diffstat (limited to 'contrib/src/boost/range/detail/implementation_help.hpp')
-rw-r--r-- | contrib/src/boost/range/detail/implementation_help.hpp | 228 |
1 files changed, 114 insertions, 114 deletions
diff --git a/contrib/src/boost/range/detail/implementation_help.hpp b/contrib/src/boost/range/detail/implementation_help.hpp index 48de625..f35953f 100644 --- a/contrib/src/boost/range/detail/implementation_help.hpp +++ b/contrib/src/boost/range/detail/implementation_help.hpp @@ -1,114 +1,114 @@ -// Boost.Range library
-//
-// Copyright Thorsten Ottosen 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// For more information, see http://www.boost.org/libs/range/
-//
-
-#ifndef BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
-#define BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
-
-#include <boost/range/config.hpp>
-#include <boost/range/detail/common.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <cstddef>
-#include <string.h>
-
-#ifndef BOOST_NO_CWCHAR
-#include <wchar.h>
-#endif
-
-namespace boost
-{
- namespace range_detail
- {
- template <typename T>
- inline void boost_range_silence_warning( const T& ) { }
-
- /////////////////////////////////////////////////////////////////////
- // end() help
- /////////////////////////////////////////////////////////////////////
-
- inline const char* str_end( const char* s, const char* )
- {
- return s + strlen( s );
- }
-
-#ifndef BOOST_NO_CWCHAR
- inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
- {
- return s + wcslen( s );
- }
-#else
- inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
- {
- if( s == 0 || s[0] == 0 )
- return s;
- while( *++s != 0 )
- ;
- return s;
- }
-#endif
-
- template< class Char >
- inline Char* str_end( Char* s )
- {
- return const_cast<Char*>( str_end( s, s ) );
- }
-
- template< class T, std::size_t sz >
- inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] )
- {
- return boost_range_array + sz;
- }
-
- template< class T, std::size_t sz >
- inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
- {
- return boost_range_array + sz;
- }
-
- /////////////////////////////////////////////////////////////////////
- // size() help
- /////////////////////////////////////////////////////////////////////
-
- template< class Char >
- inline std::size_t str_size( const Char* const& s )
- {
- return str_end( s ) - s;
- }
-
- template< class T, std::size_t sz >
- inline std::size_t array_size( T BOOST_RANGE_ARRAY_REF()[sz] )
- {
- boost_range_silence_warning( boost_range_array );
- return sz;
- }
-
- template< class T, std::size_t sz >
- inline std::size_t array_size( const T BOOST_RANGE_ARRAY_REF()[sz] )
- {
- boost_range_silence_warning( boost_range_array );
- return sz;
- }
-
- inline bool is_same_address(const void* l, const void* r)
- {
- return l == r;
- }
-
- template<class T1, class T2>
- inline bool is_same_object(const T1& l, const T2& r)
- {
- return range_detail::is_same_address(&l, &r);
- }
-
- } // namespace 'range_detail'
-
-} // namespace 'boost'
-
-
-#endif
+// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// + +#ifndef BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP +#define BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP + +#include <boost/range/config.hpp> +#include <boost/range/detail/common.hpp> +#include <boost/type_traits/is_same.hpp> +#include <cstddef> +#include <string.h> + +#ifndef BOOST_NO_CWCHAR +#include <wchar.h> +#endif + +namespace boost +{ + namespace range_detail + { + template <typename T> + inline void boost_range_silence_warning( const T& ) { } + + ///////////////////////////////////////////////////////////////////// + // end() help + ///////////////////////////////////////////////////////////////////// + + inline const char* str_end( const char* s, const char* ) + { + return s + strlen( s ); + } + +#ifndef BOOST_NO_CWCHAR + inline const wchar_t* str_end( const wchar_t* s, const wchar_t* ) + { + return s + wcslen( s ); + } +#else + inline const wchar_t* str_end( const wchar_t* s, const wchar_t* ) + { + if( s == 0 || s[0] == 0 ) + return s; + while( *++s != 0 ) + ; + return s; + } +#endif + + template< class Char > + inline Char* str_end( Char* s ) + { + return const_cast<Char*>( str_end( s, s ) ); + } + + template< class T, std::size_t sz > + inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] ) + { + return boost_range_array + sz; + } + + template< class T, std::size_t sz > + inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] ) + { + return boost_range_array + sz; + } + + ///////////////////////////////////////////////////////////////////// + // size() help + ///////////////////////////////////////////////////////////////////// + + template< class Char > + inline std::size_t str_size( const Char* const& s ) + { + return str_end( s ) - s; + } + + template< class T, std::size_t sz > + inline std::size_t array_size( T BOOST_RANGE_ARRAY_REF()[sz] ) + { + boost_range_silence_warning( boost_range_array ); + return sz; + } + + template< class T, std::size_t sz > + inline std::size_t array_size( const T BOOST_RANGE_ARRAY_REF()[sz] ) + { + boost_range_silence_warning( boost_range_array ); + return sz; + } + + inline bool is_same_address(const void* l, const void* r) + { + return l == r; + } + + template<class T1, class T2> + inline bool is_same_object(const T1& l, const T2& r) + { + return range_detail::is_same_address(&l, &r); + } + + } // namespace 'range_detail' + +} // namespace 'boost' + + +#endif |