Compare commits

...

7 Commits

Author SHA1 Message Date
a4c9c3eb65 Branch at revision 46530
[SVN r46531]
2008-06-19 18:57:10 +00:00
15a697f86b new jamfile to see warnings better
[SVN r46348]
2008-06-12 12:00:57 +00:00
dbef3564c4 fixes from Trac
[SVN r46346]
2008-06-12 10:54:44 +00:00
b948d9af17 fixes for problems from Trac
[SVN r46345]
2008-06-12 10:00:54 +00:00
95d424012b Quote href values - our tools don't support unquoted values.
[SVN r45283]
2008-05-11 13:49:20 +00:00
36a99eb0a0 test of updated as_literal()
[SVN r45124]
2008-05-05 06:42:30 +00:00
f117011b60 fix for as_literal()
[SVN r45123]
2008-05-05 06:41:54 +00:00
78 changed files with 62 additions and 58 deletions

0
doc/examples.html Executable file → Normal file
View File

0
doc/faq.html Executable file → Normal file
View File

0
doc/headers.html Executable file → Normal file
View File

0
doc/history_ack.html Executable file → Normal file
View File

2
doc/intro.html Executable file → Normal file
View File

@ -24,7 +24,7 @@
to a somewhat clumsy use of the algorithms with redundant specification
of container names. Therefore we would like to raise the abstraction level
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>

0
doc/portability.html Executable file → Normal file
View File

0
doc/range.html Executable file → Normal file
View File

0
doc/style.css Executable file → Normal file
View File

2
doc/style.html Executable file → Normal file
View File

@ -53,7 +53,7 @@
<a href="range.html#bidirectional_range">Bidirectional Range</a> <li>
<a href="range.html#random_access_range">Random Access Range</a> </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>.
<p>

View File

@ -27,9 +27,9 @@
<ul>
<li>
Class <a href=#iter_range><code>iterator_range</code></a>
Class <a href="#iter_range"><code>iterator_range</code></a>
<li>
Class <a href=#sub_range><code>sub_range</code></a>
Class <a href="#sub_range"><code>sub_range</code></a>
</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>&amp; </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><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 class=comment>// namespace 'boost'</span>

0
include/boost/range.hpp Executable file → Normal file
View File

0
include/boost/range/as_array.hpp Executable file → Normal file
View File

24
include/boost/range/as_literal.hpp Executable file → Normal file
View File

@ -8,8 +8,8 @@
// For more information, see http://www.boost.org/libs/range/
//
#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#ifndef BOOST_RANGE_AS_LITERAL_HPP
#define BOOST_RANGE_AS_LITERAL_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
@ -25,7 +25,9 @@
#include <boost/detail/workaround.hpp>
#include <cstring>
#ifndef BOOST_NO_CWCHAR
#include <cwchar>
#endif
namespace boost
{
@ -36,10 +38,12 @@ namespace boost
return strlen( s );
}
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
inline std::size_t length( const wchar_t* s )
{
return wcslen( s );
}
#endif
//
// Remark: the compiler cannot choose between T* and T[sz]
@ -57,7 +61,7 @@ namespace boost
return true;
}
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
inline bool is_char_ptr( wchar_t* )
{
return true;
@ -67,6 +71,7 @@ namespace boost
{
return true;
}
#endif
template< class T >
inline long is_char_ptr( T /* r */ )
@ -107,22 +112,13 @@ namespace boost
template< class Char, std::size_t sz >
inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
{
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
return boost::make_iterator_range<Char*>( arr, arr + sz - 1 );
#else
return boost::make_iterator_range( arr, arr + sz - 1 );
#endif
return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
}
template< class Char, std::size_t sz >
inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
{
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
return boost::make_iterator_range<const Char*>( arr, arr + sz - 1 );
#else
return boost::make_iterator_range( arr, arr + sz - 1 );
#endif
return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
}
}

8
include/boost/range/begin.hpp Executable file → Normal file
View File

@ -73,15 +73,15 @@ namespace range_detail
// May this be discarded? Or is it needed for bad compilers?
//
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 >
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
View File

0
include/boost/range/concepts.hpp Executable file → Normal file
View File

0
include/boost/range/config.hpp Executable file → Normal file
View File

0
include/boost/range/const_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/const_reverse_iterator.hpp Executable file → Normal file
View File

4
include/boost/range/detail/as_literal.hpp Executable file → Normal file
View File

@ -8,8 +8,8 @@
// For more information, see http://www.boost.org/libs/range/
//
#ifndef BOOST_RANGE_AS_LITERAL_HPP
#define BOOST_RANGE_AS_LITERAL_HPP
#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once

0
include/boost/range/detail/begin.hpp Executable file → Normal file
View File

0
include/boost/range/detail/collection_traits.hpp Executable file → Normal file
View File

View File

0
include/boost/range/detail/common.hpp Executable file → Normal file
View File

0
include/boost/range/detail/const_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/detail/detail_str.hpp Executable file → Normal file
View File

0
include/boost/range/detail/difference_type.hpp Executable file → Normal file
View File

0
include/boost/range/detail/empty.hpp Executable file → Normal file
View File

0
include/boost/range/detail/end.hpp Executable file → Normal file
View File

0
include/boost/range/detail/implementation_help.hpp Executable file → Normal file
View File

0
include/boost/range/detail/iterator.hpp Executable file → Normal file
View File

0
include/boost/range/detail/remove_extent.hpp Executable file → Normal file
View File

0
include/boost/range/detail/sfinae.hpp Executable file → Normal file
View File

0
include/boost/range/detail/size.hpp Executable file → Normal file
View File

0
include/boost/range/detail/size_type.hpp Executable file → Normal file
View File

0
include/boost/range/detail/sizer.hpp Executable file → Normal file
View File

0
include/boost/range/detail/str_types.hpp Executable file → Normal file
View File

0
include/boost/range/detail/value_type.hpp Executable file → Normal file
View File

0
include/boost/range/detail/vc6/end.hpp Executable file → Normal file
View File

0
include/boost/range/detail/vc6/size.hpp Executable file → Normal file
View File

0
include/boost/range/difference_type.hpp Executable file → Normal file
View File

0
include/boost/range/distance.hpp Executable file → Normal file
View File

0
include/boost/range/empty.hpp Executable file → Normal file
View File

8
include/boost/range/end.hpp Executable file → Normal file
View File

@ -71,15 +71,15 @@ namespace range_detail
//////////////////////////////////////////////////////////////////////
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 >
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)) && \

0
include/boost/range/functions.hpp Executable file → Normal file
View File

0
include/boost/range/iterator.hpp Executable file → Normal file
View File

12
include/boost/range/iterator_range.hpp Executable file → Normal file
View File

@ -185,7 +185,7 @@ namespace boost
m_Begin(Begin), m_End(End)
#ifndef NDEBUG
, singular(false)
#endif
#endif
{}
//! Constructor from a Range
@ -210,7 +210,7 @@ namespace boost
template< class Range >
iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
#ifndef NDEBUG
#ifndef NDEBUG
, singular(false)
#endif
{}
@ -219,7 +219,7 @@ namespace boost
template< class Range >
iterator_range( Range& r, iterator_range_detail::range_tag ) :
m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
#ifndef NDEBUG
#ifndef NDEBUG
, singular(false)
#endif
{}
@ -390,13 +390,15 @@ namespace boost
bool singular;
#endif
#ifndef NDEBUG
public:
bool is_singular() const
{
#ifndef NDEBUG
return singular;
#else
return false;
#endif
}
#endif
protected:
//

0
include/boost/range/metafunctions.hpp Executable file → Normal file
View File

0
include/boost/range/mutable_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/pointer.hpp Executable file → Normal file
View File

0
include/boost/range/rbegin.hpp Executable file → Normal file
View File

0
include/boost/range/reference.hpp Executable file → Normal file
View File

0
include/boost/range/rend.hpp Executable file → Normal file
View File

0
include/boost/range/result_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/reverse_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/reverse_result_iterator.hpp Executable file → Normal file
View File

0
include/boost/range/size.hpp Executable file → Normal file
View File

0
include/boost/range/size_type.hpp Executable file → Normal file
View File

14
include/boost/range/sub_range.hpp Executable file → Normal file
View File

@ -23,6 +23,8 @@
#include <boost/range/size_type.hpp>
#include <boost/range/difference_type.hpp>
#include <boost/assert.hpp>
#include <boost/type_traits/is_reference.hpp>
#include <boost/type_traits/remove_reference.hpp>
namespace boost
{
@ -41,6 +43,12 @@ namespace boost
typedef BOOST_DEDUCED_TYPENAME range_difference<ForwardRange>::type difference_type;
typedef BOOST_DEDUCED_TYPENAME range_size<ForwardRange>::type size_type;
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:
sub_range() : base()
@ -112,7 +120,7 @@ namespace boost
return base::front();
}
const value_type& front() const
const_reference front() const
{
return base::front();
}
@ -122,7 +130,7 @@ namespace boost
return base::back();
}
const value_type& back() const
const_reference back() const
{
return base::back();
}
@ -132,7 +140,7 @@ namespace boost
return base::operator[](sz);
}
const value_type& operator[]( difference_type sz ) const
const_reference operator[]( difference_type sz ) const
{
return base::operator[](sz);
}

0
include/boost/range/value_type.hpp Executable file → Normal file
View File

2
index.html Executable file → Normal file
View File

@ -22,7 +22,7 @@
</p>
<p>
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>).
</p>

View File

@ -12,9 +12,9 @@ rule range-test ( name : includes * )
{
return [
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
View File

0
test/adl_conformance_no_using.cpp Executable file → Normal file
View File

0
test/algorithm_example.cpp Executable file → Normal file
View File

0
test/array.cpp Executable file → Normal file
View File

0
test/compat2.cpp Executable file → Normal file
View File

0
test/compat3.cpp Executable file → Normal file
View File

0
test/const_ranges.cpp Executable file → Normal file
View File

0
test/extension_mechanism.cpp Executable file → Normal file
View File

0
test/iterator_pair.cpp Executable file → Normal file
View File

0
test/iterator_range.cpp Executable file → Normal file
View File

0
test/mfc.cpp Executable file → Normal file
View File

0
test/partial_workaround.cpp Executable file → Normal file
View File

0
test/reversible_range.cpp Executable file → Normal file
View File

0
test/std_container.cpp Executable file → Normal file
View File

34
test/string.cpp Executable file → Normal file
View File

@ -137,14 +137,7 @@ void check_char()
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( 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 );
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);
@ -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_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()
{
check_char();
// check_char<volatile char>();
// check_char<const char>();
// check_char<const volatile char>();
#ifndef BOOST_NO_STD_WSTRING
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_empty( char_ws ), (char_ws == 0 || char_ws[0] == wchar_t()) );
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';
BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) );

0
test/sub_range.cpp Executable file → Normal file
View File