forked from boostorg/range
Compare commits
7 Commits
svn-branch
...
svn-branch
Author | SHA1 | Date | |
---|---|---|---|
a4c9c3eb65 | |||
15a697f86b | |||
dbef3564c4 | |||
b948d9af17 | |||
95d424012b | |||
36a99eb0a0 | |||
f117011b60 |
0
doc/examples.html
Executable file → Normal file
0
doc/examples.html
Executable file → Normal file
0
doc/faq.html
Executable file → Normal file
0
doc/faq.html
Executable file → Normal file
0
doc/headers.html
Executable file → Normal file
0
doc/headers.html
Executable file → Normal file
0
doc/history_ack.html
Executable file → Normal file
0
doc/history_ack.html
Executable file → Normal file
2
doc/intro.html
Executable file → Normal file
2
doc/intro.html
Executable file → Normal file
@ -24,7 +24,7 @@
|
|||||||
to a somewhat clumsy use of the algorithms with redundant specification
|
to a somewhat clumsy use of the algorithms with redundant specification
|
||||||
of container names. Therefore we would like to raise the abstraction level
|
of container names. Therefore we would like to raise the abstraction level
|
||||||
for algorithms so they specify their interface in terms of <a
|
for algorithms so they specify their interface in terms of <a
|
||||||
href=range.html>Ranges</a> as much as possible.
|
href="range.html">Ranges</a> as much as possible.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
0
doc/portability.html
Executable file → Normal file
0
doc/portability.html
Executable file → Normal file
0
doc/range.html
Executable file → Normal file
0
doc/range.html
Executable file → Normal file
0
doc/style.css
Executable file → Normal file
0
doc/style.css
Executable file → Normal file
2
doc/style.html
Executable file → Normal file
2
doc/style.html
Executable file → Normal file
@ -53,7 +53,7 @@
|
|||||||
<a href="range.html#bidirectional_range">Bidirectional Range</a> <li>
|
<a href="range.html#bidirectional_range">Bidirectional Range</a> <li>
|
||||||
<a href="range.html#random_access_range">Random Access Range</a> </ul>
|
<a href="range.html#random_access_range">Random Access Range</a> </ul>
|
||||||
</ul>
|
</ul>
|
||||||
Notice how we have used the categories from the <a href=../../iterator/doc/new-iter-concepts.html>new
|
Notice how we have used the categories from the <a href="../../iterator/doc/new-iter-concepts.html">new
|
||||||
style iterators</a>.
|
style iterators</a>.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -27,9 +27,9 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Class <a href=#iter_range><code>iterator_range</code></a>
|
Class <a href="#iter_range"><code>iterator_range</code></a>
|
||||||
<li>
|
<li>
|
||||||
Class <a href=#sub_range><code>sub_range</code></a>
|
Class <a href="#sub_range"><code>sub_range</code></a>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -329,7 +329,7 @@ class can propagate constness since it knows what a corresponding
|
|||||||
<span class=keyword>const </span><span class=identifier>value_type</span><span class=special>& </span><span class=keyword>operator</span><span class=special>[]( </span><span class=identifier>difference_type </span><span class=identifier>at </span><span class=special>) </span><span class=keyword>const</span><span class=special>;</span>
|
<span class=keyword>const </span><span class=identifier>value_type</span><span class=special>& </span><span class=keyword>operator</span><span class=special>[]( </span><span class=identifier>difference_type </span><span class=identifier>at </span><span class=special>) </span><span class=keyword>const</span><span class=special>;</span>
|
||||||
|
|
||||||
<span class=keyword>public</span><span class=special>:
|
<span class=keyword>public</span><span class=special>:
|
||||||
</span><span class=comment>// rest of interface inherited from <a href=#iter_range><code>iterator_range</code></a>
|
</span><span class=comment>// rest of interface inherited from <a href="#iter_range"><code>iterator_range</code></a>
|
||||||
</span><span class=special>};
|
</span><span class=special>};
|
||||||
</span>
|
</span>
|
||||||
<span class=special>} </span><span class=comment>// namespace 'boost'</span>
|
<span class=special>} </span><span class=comment>// namespace 'boost'</span>
|
||||||
|
0
include/boost/range.hpp
Executable file → Normal file
0
include/boost/range.hpp
Executable file → Normal file
0
include/boost/range/as_array.hpp
Executable file → Normal file
0
include/boost/range/as_array.hpp
Executable file → Normal file
24
include/boost/range/as_literal.hpp
Executable file → Normal file
24
include/boost/range/as_literal.hpp
Executable file → Normal file
@ -8,8 +8,8 @@
|
|||||||
// For more information, see http://www.boost.org/libs/range/
|
// For more information, see http://www.boost.org/libs/range/
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
|
#ifndef BOOST_RANGE_AS_LITERAL_HPP
|
||||||
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
|
#define BOOST_RANGE_AS_LITERAL_HPP
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
||||||
# pragma once
|
# pragma once
|
||||||
@ -25,7 +25,9 @@
|
|||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#ifndef BOOST_NO_CWCHAR
|
||||||
#include <cwchar>
|
#include <cwchar>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
@ -36,10 +38,12 @@ namespace boost
|
|||||||
return strlen( s );
|
return strlen( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
inline std::size_t length( const wchar_t* s )
|
inline std::size_t length( const wchar_t* s )
|
||||||
{
|
{
|
||||||
return wcslen( s );
|
return wcslen( s );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Remark: the compiler cannot choose between T* and T[sz]
|
// Remark: the compiler cannot choose between T* and T[sz]
|
||||||
@ -57,7 +61,7 @@ namespace boost
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
inline bool is_char_ptr( wchar_t* )
|
inline bool is_char_ptr( wchar_t* )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -67,6 +71,7 @@ namespace boost
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
inline long is_char_ptr( T /* r */ )
|
inline long is_char_ptr( T /* r */ )
|
||||||
@ -107,22 +112,13 @@ namespace boost
|
|||||||
template< class Char, std::size_t sz >
|
template< class Char, std::size_t sz >
|
||||||
inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
|
inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
|
||||||
{
|
{
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
|
return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
|
||||||
return boost::make_iterator_range<Char*>( arr, arr + sz - 1 );
|
|
||||||
#else
|
|
||||||
return boost::make_iterator_range( arr, arr + sz - 1 );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template< class Char, std::size_t sz >
|
template< class Char, std::size_t sz >
|
||||||
inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
|
inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
|
||||||
{
|
{
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
|
return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
|
||||||
return boost::make_iterator_range<const Char*>( arr, arr + sz - 1 );
|
|
||||||
#else
|
|
||||||
return boost::make_iterator_range( arr, arr + sz - 1 );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
include/boost/range/begin.hpp
Executable file → Normal file
8
include/boost/range/begin.hpp
Executable file → Normal file
@ -73,15 +73,15 @@ namespace range_detail
|
|||||||
// May this be discarded? Or is it needed for bad compilers?
|
// May this be discarded? Or is it needed for bad compilers?
|
||||||
//
|
//
|
||||||
template< typename T, std::size_t sz >
|
template< typename T, std::size_t sz >
|
||||||
inline const T* range_begin( const T (&array)[sz] )
|
inline const T* range_begin( const T (&a)[sz] )
|
||||||
{
|
{
|
||||||
return array;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename T, std::size_t sz >
|
template< typename T, std::size_t sz >
|
||||||
inline T* range_begin( T (&array)[sz] )
|
inline T* range_begin( T (&a)[sz] )
|
||||||
{
|
{
|
||||||
return array;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
0
include/boost/range/category.hpp
Executable file → Normal file
0
include/boost/range/category.hpp
Executable file → Normal file
0
include/boost/range/concepts.hpp
Executable file → Normal file
0
include/boost/range/concepts.hpp
Executable file → Normal file
0
include/boost/range/config.hpp
Executable file → Normal file
0
include/boost/range/config.hpp
Executable file → Normal file
0
include/boost/range/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_reverse_iterator.hpp
Executable file → Normal file
4
include/boost/range/detail/as_literal.hpp
Executable file → Normal file
4
include/boost/range/detail/as_literal.hpp
Executable file → Normal file
@ -8,8 +8,8 @@
|
|||||||
// For more information, see http://www.boost.org/libs/range/
|
// For more information, see http://www.boost.org/libs/range/
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_AS_LITERAL_HPP
|
#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
|
||||||
#define BOOST_RANGE_AS_LITERAL_HPP
|
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
||||||
# pragma once
|
# pragma once
|
||||||
|
0
include/boost/range/detail/begin.hpp
Executable file → Normal file
0
include/boost/range/detail/begin.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits_detail.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits_detail.hpp
Executable file → Normal file
0
include/boost/range/detail/common.hpp
Executable file → Normal file
0
include/boost/range/detail/common.hpp
Executable file → Normal file
0
include/boost/range/detail/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/detail_str.hpp
Executable file → Normal file
0
include/boost/range/detail/detail_str.hpp
Executable file → Normal file
0
include/boost/range/detail/difference_type.hpp
Executable file → Normal file
0
include/boost/range/detail/difference_type.hpp
Executable file → Normal file
0
include/boost/range/detail/empty.hpp
Executable file → Normal file
0
include/boost/range/detail/empty.hpp
Executable file → Normal file
0
include/boost/range/detail/end.hpp
Executable file → Normal file
0
include/boost/range/detail/end.hpp
Executable file → Normal file
0
include/boost/range/detail/implementation_help.hpp
Executable file → Normal file
0
include/boost/range/detail/implementation_help.hpp
Executable file → Normal file
0
include/boost/range/detail/iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/remove_extent.hpp
Executable file → Normal file
0
include/boost/range/detail/remove_extent.hpp
Executable file → Normal file
0
include/boost/range/detail/sfinae.hpp
Executable file → Normal file
0
include/boost/range/detail/sfinae.hpp
Executable file → Normal file
0
include/boost/range/detail/size.hpp
Executable file → Normal file
0
include/boost/range/detail/size.hpp
Executable file → Normal file
0
include/boost/range/detail/size_type.hpp
Executable file → Normal file
0
include/boost/range/detail/size_type.hpp
Executable file → Normal file
0
include/boost/range/detail/sizer.hpp
Executable file → Normal file
0
include/boost/range/detail/sizer.hpp
Executable file → Normal file
0
include/boost/range/detail/str_types.hpp
Executable file → Normal file
0
include/boost/range/detail/str_types.hpp
Executable file → Normal file
0
include/boost/range/detail/value_type.hpp
Executable file → Normal file
0
include/boost/range/detail/value_type.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/end.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/end.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/size.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/size.hpp
Executable file → Normal file
0
include/boost/range/difference_type.hpp
Executable file → Normal file
0
include/boost/range/difference_type.hpp
Executable file → Normal file
0
include/boost/range/distance.hpp
Executable file → Normal file
0
include/boost/range/distance.hpp
Executable file → Normal file
0
include/boost/range/empty.hpp
Executable file → Normal file
0
include/boost/range/empty.hpp
Executable file → Normal file
8
include/boost/range/end.hpp
Executable file → Normal file
8
include/boost/range/end.hpp
Executable file → Normal file
@ -71,15 +71,15 @@ namespace range_detail
|
|||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
template< typename T, std::size_t sz >
|
template< typename T, std::size_t sz >
|
||||||
inline const T* range_end( const T (&array)[sz] )
|
inline const T* range_end( const T (&a)[sz] )
|
||||||
{
|
{
|
||||||
return range_detail::array_end<T,sz>( array );
|
return range_detail::array_end<T,sz>( a );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename T, std::size_t sz >
|
template< typename T, std::size_t sz >
|
||||||
inline T* range_end( T (&array)[sz] )
|
inline T* range_end( T (&a)[sz] )
|
||||||
{
|
{
|
||||||
return range_detail::array_end<T,sz>( array );
|
return range_detail::array_end<T,sz>( a );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
|
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
|
||||||
|
0
include/boost/range/functions.hpp
Executable file → Normal file
0
include/boost/range/functions.hpp
Executable file → Normal file
0
include/boost/range/iterator.hpp
Executable file → Normal file
0
include/boost/range/iterator.hpp
Executable file → Normal file
6
include/boost/range/iterator_range.hpp
Executable file → Normal file
6
include/boost/range/iterator_range.hpp
Executable file → Normal file
@ -390,13 +390,15 @@ namespace boost
|
|||||||
bool singular;
|
bool singular;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NDEBUG
|
|
||||||
public:
|
public:
|
||||||
bool is_singular() const
|
bool is_singular() const
|
||||||
{
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
return singular;
|
return singular;
|
||||||
}
|
#else
|
||||||
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//
|
//
|
||||||
|
0
include/boost/range/metafunctions.hpp
Executable file → Normal file
0
include/boost/range/metafunctions.hpp
Executable file → Normal file
0
include/boost/range/mutable_iterator.hpp
Executable file → Normal file
0
include/boost/range/mutable_iterator.hpp
Executable file → Normal file
0
include/boost/range/pointer.hpp
Executable file → Normal file
0
include/boost/range/pointer.hpp
Executable file → Normal file
0
include/boost/range/rbegin.hpp
Executable file → Normal file
0
include/boost/range/rbegin.hpp
Executable file → Normal file
0
include/boost/range/reference.hpp
Executable file → Normal file
0
include/boost/range/reference.hpp
Executable file → Normal file
0
include/boost/range/rend.hpp
Executable file → Normal file
0
include/boost/range/rend.hpp
Executable file → Normal file
0
include/boost/range/result_iterator.hpp
Executable file → Normal file
0
include/boost/range/result_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_result_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_result_iterator.hpp
Executable file → Normal file
0
include/boost/range/size.hpp
Executable file → Normal file
0
include/boost/range/size.hpp
Executable file → Normal file
0
include/boost/range/size_type.hpp
Executable file → Normal file
0
include/boost/range/size_type.hpp
Executable file → Normal file
14
include/boost/range/sub_range.hpp
Executable file → Normal file
14
include/boost/range/sub_range.hpp
Executable file → Normal file
@ -23,6 +23,8 @@
|
|||||||
#include <boost/range/size_type.hpp>
|
#include <boost/range/size_type.hpp>
|
||||||
#include <boost/range/difference_type.hpp>
|
#include <boost/range/difference_type.hpp>
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
|
#include <boost/type_traits/is_reference.hpp>
|
||||||
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
@ -42,6 +44,12 @@ namespace boost
|
|||||||
typedef BOOST_DEDUCED_TYPENAME range_size<ForwardRange>::type size_type;
|
typedef BOOST_DEDUCED_TYPENAME range_size<ForwardRange>::type size_type;
|
||||||
typedef BOOST_DEDUCED_TYPENAME base::reference reference;
|
typedef BOOST_DEDUCED_TYPENAME base::reference reference;
|
||||||
|
|
||||||
|
public: // for return value of front/back
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::mpl::if_< boost::is_reference<reference>,
|
||||||
|
const BOOST_DEDUCED_TYPENAME boost::remove_reference<reference>::type&,
|
||||||
|
reference >::type const_reference;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
sub_range() : base()
|
sub_range() : base()
|
||||||
{ }
|
{ }
|
||||||
@ -112,7 +120,7 @@ namespace boost
|
|||||||
return base::front();
|
return base::front();
|
||||||
}
|
}
|
||||||
|
|
||||||
const value_type& front() const
|
const_reference front() const
|
||||||
{
|
{
|
||||||
return base::front();
|
return base::front();
|
||||||
}
|
}
|
||||||
@ -122,7 +130,7 @@ namespace boost
|
|||||||
return base::back();
|
return base::back();
|
||||||
}
|
}
|
||||||
|
|
||||||
const value_type& back() const
|
const_reference back() const
|
||||||
{
|
{
|
||||||
return base::back();
|
return base::back();
|
||||||
}
|
}
|
||||||
@ -132,7 +140,7 @@ namespace boost
|
|||||||
return base::operator[](sz);
|
return base::operator[](sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
const value_type& operator[]( difference_type sz ) const
|
const_reference operator[]( difference_type sz ) const
|
||||||
{
|
{
|
||||||
return base::operator[](sz);
|
return base::operator[](sz);
|
||||||
}
|
}
|
||||||
|
0
include/boost/range/value_type.hpp
Executable file → Normal file
0
include/boost/range/value_type.hpp
Executable file → Normal file
2
index.html
Executable file → Normal file
2
index.html
Executable file → Normal file
@ -22,7 +22,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Use, modification and distribution is subject to the Boost Software License, Version 1.0
|
Use, modification and distribution is subject to the Boost Software License, Version 1.0
|
||||||
(see <a href=http://www.boost.org/LICENSE_1_0.txt>
|
(see <a href="http://www.boost.org/LICENSE_1_0.txt">
|
||||||
http://www.boost.org/LICENSE_1_0.txt</a>).
|
http://www.boost.org/LICENSE_1_0.txt</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ rule range-test ( name : includes * )
|
|||||||
run $(name).cpp /boost/test//boost_unit_test_framework/<link>static
|
run $(name).cpp /boost/test//boost_unit_test_framework/<link>static
|
||||||
:
|
:
|
||||||
:
|
:
|
||||||
: $(includes)
|
: <toolset>gcc:<cxxflags>"-Wall -Wunused "
|
||||||
] ;
|
] ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
0
test/adl_conformance.cpp
Executable file → Normal file
0
test/adl_conformance.cpp
Executable file → Normal file
0
test/adl_conformance_no_using.cpp
Executable file → Normal file
0
test/adl_conformance_no_using.cpp
Executable file → Normal file
0
test/algorithm_example.cpp
Executable file → Normal file
0
test/algorithm_example.cpp
Executable file → Normal file
0
test/array.cpp
Executable file → Normal file
0
test/array.cpp
Executable file → Normal file
0
test/compat2.cpp
Executable file → Normal file
0
test/compat2.cpp
Executable file → Normal file
0
test/compat3.cpp
Executable file → Normal file
0
test/compat3.cpp
Executable file → Normal file
0
test/const_ranges.cpp
Executable file → Normal file
0
test/const_ranges.cpp
Executable file → Normal file
0
test/extension_mechanism.cpp
Executable file → Normal file
0
test/extension_mechanism.cpp
Executable file → Normal file
0
test/iterator_pair.cpp
Executable file → Normal file
0
test/iterator_pair.cpp
Executable file → Normal file
0
test/iterator_range.cpp
Executable file → Normal file
0
test/iterator_range.cpp
Executable file → Normal file
0
test/mfc.cpp
Executable file → Normal file
0
test/mfc.cpp
Executable file → Normal file
0
test/partial_workaround.cpp
Executable file → Normal file
0
test/partial_workaround.cpp
Executable file → Normal file
0
test/reversible_range.cpp
Executable file → Normal file
0
test/reversible_range.cpp
Executable file → Normal file
0
test/std_container.cpp
Executable file → Normal file
0
test/std_container.cpp
Executable file → Normal file
34
test/string.cpp
Executable file → Normal file
34
test/string.cpp
Executable file → Normal file
@ -137,14 +137,7 @@ void check_char()
|
|||||||
BOOST_CHECK_EQUAL( str_end( char_s ), str_end1 );
|
BOOST_CHECK_EQUAL( str_end( char_s ), str_end1 );
|
||||||
BOOST_CHECK_EQUAL( str_empty( char_s ), (char_s == 0 || char_s[0] == char()) );
|
BOOST_CHECK_EQUAL( str_empty( char_s ), (char_s == 0 || char_s[0] == char()) );
|
||||||
BOOST_CHECK_EQUAL( sz, std::char_traits<char>::length( char_s ) );
|
BOOST_CHECK_EQUAL( sz, std::char_traits<char>::length( char_s ) );
|
||||||
/*
|
|
||||||
BOOST_CHECK_EQUAL( str_begin( char_s2 ), char_s2 );
|
|
||||||
std::size_t sz2 = size( char_s2 );
|
|
||||||
const char* str_end12 = str_begin( char_s2 ) + sz;
|
|
||||||
BOOST_CHECK_EQUAL( str_end( char_s2 ), str_end12 );
|
|
||||||
BOOST_CHECK_EQUAL( empty( char_s2 ), (char_s2 == 0 || char_s2[0] == char()) );
|
|
||||||
BOOST_CHECK_EQUAL( sz2, std::char_traits<char>::length( char_s2 ) );
|
|
||||||
*/
|
|
||||||
BOOST_CHECK_EQUAL( str_begin( my_string ), my_string );
|
BOOST_CHECK_EQUAL( str_begin( my_string ), my_string );
|
||||||
range_iterator<char_array_t>::type str_end2 = str_begin( my_string ) + str_size(my_string);
|
range_iterator<char_array_t>::type str_end2 = str_begin( my_string ) + str_size(my_string);
|
||||||
range_iterator<char_array_t>::type str_end3 = str_end(my_string);
|
range_iterator<char_array_t>::type str_end3 = str_end(my_string);
|
||||||
@ -165,6 +158,20 @@ void check_char()
|
|||||||
|
|
||||||
BOOST_CHECK( find_const( as_array( my_string ), to_search ) != str_end(my_string) );
|
BOOST_CHECK( find_const( as_array( my_string ), to_search ) != str_end(my_string) );
|
||||||
BOOST_CHECK( find_const( as_array( my_const_string ), to_search ) != str_end(my_string) );
|
BOOST_CHECK( find_const( as_array( my_const_string ), to_search ) != str_end(my_string) );
|
||||||
|
|
||||||
|
//
|
||||||
|
// Test that as_literal() always scan for null terminator
|
||||||
|
//
|
||||||
|
char an_array[] = "foo\0bar";
|
||||||
|
BOOST_CHECK_EQUAL( str_begin( an_array ), an_array );
|
||||||
|
BOOST_CHECK_EQUAL( str_end( an_array ), an_array + 3 );
|
||||||
|
BOOST_CHECK_EQUAL( str_size( an_array ), 3 );
|
||||||
|
|
||||||
|
const char a_const_array[] = "foobar\0doh";
|
||||||
|
BOOST_CHECK_EQUAL( str_begin( a_const_array ), a_const_array );
|
||||||
|
BOOST_CHECK_EQUAL( str_end( a_const_array ), a_const_array + 6 );
|
||||||
|
BOOST_CHECK_EQUAL( str_size( a_const_array ), 6 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -172,9 +179,6 @@ void check_char()
|
|||||||
void check_string()
|
void check_string()
|
||||||
{
|
{
|
||||||
check_char();
|
check_char();
|
||||||
// check_char<volatile char>();
|
|
||||||
// check_char<const char>();
|
|
||||||
// check_char<const volatile char>();
|
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
typedef wchar_t* wchar_iterator_t;
|
typedef wchar_t* wchar_iterator_t;
|
||||||
@ -197,13 +201,7 @@ void check_string()
|
|||||||
BOOST_CHECK_EQUAL( str_end(char_ws), (str_begin( char_ws ) + sz) );
|
BOOST_CHECK_EQUAL( str_end(char_ws), (str_begin( char_ws ) + sz) );
|
||||||
BOOST_CHECK_EQUAL( str_empty( char_ws ), (char_ws == 0 || char_ws[0] == wchar_t()) );
|
BOOST_CHECK_EQUAL( str_empty( char_ws ), (char_ws == 0 || char_ws[0] == wchar_t()) );
|
||||||
BOOST_CHECK_EQUAL( sz, std::char_traits<wchar_t>::length( char_ws ) );
|
BOOST_CHECK_EQUAL( sz, std::char_traits<wchar_t>::length( char_ws ) );
|
||||||
/*
|
|
||||||
std::size_t sz2 = size( char_ws2 );
|
|
||||||
BOOST_CHECK_EQUAL( str_begin( char_ws2 ), char_ws2 );
|
|
||||||
BOOST_CHECK_EQUAL( str_end( char_ws2 ), (begin( char_ws2 ) + sz2) );
|
|
||||||
BOOST_CHECK_EQUAL( empty( char_ws2 ), (char_ws2 == 0 || char_ws2[0] == wchar_t()) );
|
|
||||||
BOOST_CHECK_EQUAL( sz2, std::char_traits<wchar_t>::length( char_ws2 ) );
|
|
||||||
*/
|
|
||||||
wchar_t to_search = L'n';
|
wchar_t to_search = L'n';
|
||||||
BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) );
|
BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) );
|
||||||
|
|
||||||
|
0
test/sub_range.cpp
Executable file → Normal file
0
test/sub_range.cpp
Executable file → Normal file
Reference in New Issue
Block a user