diff --git a/doc/boost_range.html b/doc/boost_range.html index f9fec8c..e7da701 100644 --- a/doc/boost_range.html +++ b/doc/boost_range.html @@ -56,7 +56,7 @@ the standard container requirements. For example, the utility class iterator_range implements the minimal interface required to make the - class a Forward Range. + class a Forward Range.

@@ -75,28 +75,28 @@ // template< class T > - struct value_type_of; + struct range_value; template< class T > - struct iterator_of; + struct range_iterator; template< class T > - struct const_iterator_of; + struct range_const_iterator; // // Forward Range metafunctions // template< class T > - struct difference_type_of; + struct range_difference; template< class T > - struct size_type_of; + struct range_size; // // Bidirectional Range metafunctions @@ -104,45 +104,45 @@ class=identifier>size_type_of; template< class T > struct reverse_iterator_of; +href="#range_reverse_iterator">range_reverse_iterator; template< class T > struct const_reverse_iterator_of; +href="#range_const_reverse_iterator">range_const_reverse_iterator; // // Special metafunctions // template< class T > - struct result_iterator_of; + struct range_result_iterator; template< class T > struct reverse_result_iterator_of; +href="#range_reverse_result_iterator">range_reverse_result_iterator; // // Single Pass Range functions // template< class T > - typename iterator_of<T>::type + typename range_iterator<T>::type begin( T& c ); template< class T > - typename const_iterator_of<T>::type + typename range_const_iterator<T>::type begin( const T& c ); template< class T > - typename iterator_of<T>::type + typename range_iterator<T>::type end( T& c ); template< class T > - typename const_iterator_of<T>::type + typename range_const_iterator<T>::type end( const T& c ); template< class T > @@ -154,7 +154,7 @@ class=identifier>reverse_result_iterator_of; // template< class T > - typename size_type_of<T>::type + typename range_size<T>::type size( const T& c ); // @@ -162,19 +162,19 @@ class=identifier>reverse_result_iterator_of; // template< class T > - typename reverse_iterator_of<T>::type + typename range_reverse_iterator<T>::type rbegin( T& c ); template< class T > - typename const_reverse_iterator_of<T>::type + typename range_const_reverse_iterator<T>::type rbegin( const T& c ); template< class T > - typename reverse_iterator_of<T>::type + typename range_reverse_iterator<T>::type rend( T& c ); template< class T > - typename const_reverse_iterator_of<T>::type + typename range_const_reverse_iterator<T>::type rend( const T& c ); @@ -234,8 +234,8 @@ class=identifier>T& Complexity - - value_type_of<X>::type + + range_value<X>::type T::value_type
boost::iterator_value<P::first_type>::type
A
@@ -243,8 +243,8 @@ class=identifier>T
& compile time - - iterator_of<X>::type + + range_iterator<X>::type T::iterator
P::first_type
A*
@@ -252,8 +252,8 @@ class=identifier>T
& compile time - - const_iterator_of<X>::type + + range_const_iterator<X>::type T::const_iterator
P::first_type
const A*
@@ -261,8 +261,8 @@ class=identifier>T
& compile time - - difference_type_of<X>::type + + range_difference<X>::type T::difference_type
boost_iterator_difference<P::first_type>::type
@@ -271,8 +271,8 @@ class=identifier>T
& compile time - - size_type_of<X>::type + + range_size<X>::type T::size_type
std::size_t
std::size_t
@@ -280,30 +280,30 @@ class=identifier>T
& compile time - - result_iterator_of<X>::type - const_iterator_of<X>::type if + range_result_iterator<X>::type + range_const_iterator<X>::type if X is const
- iterator_of<X>::type otherwise + range_iterator<X>::type otherwise compile time - - reverse_iterator_of<X>::type - boost::reverse_iterator< typename iterator_of<T>::type >
+ + range_reverse_iterator<X>::type + boost::reverse_iterator< typename range_iterator<T>::type >
compile time - - const_reverse_iterator_of<X>::type - boost::reverse_iterator< typename const_iterator_of<T>::type > + + range_const_reverse_iterator<X>::type + boost::reverse_iterator< typename range_const_iterator<T>::type >
compile time - - reverse_result_iterator_of<X>::type - boost::reverse_iterator< typename result_iterator_of<T>::type + + range_reverse_result_iterator<X>::type + boost::reverse_iterator< typename range_result_iterator<T>::type > compile time @@ -312,7 +312,7 @@ class=identifier>T
&

- The special metafunctions result_iterator_of and reverse_result_iterator_of + The special metafunctions range_result_iterator and range_reverse_result_iterator are not part of any Range concept, but they are very useful when implementing certain Range classes like sub_range because of their @@ -331,7 +331,7 @@ class=identifier>T& begin(x) - result_iterator_of<X>::type + range_result_iterator<X>::type t.begin()
p.first
a
@@ -341,7 +341,7 @@ class=identifier>T
& end(x) - result_iterator_of<X>::type + range_result_iterator<X>::type t.end()
p.second
a + sz
@@ -365,7 +365,7 @@ class=identifier>T
& size(x) - size_type_of<X>::type + range_size<X>::type t.size()
std::distance(p.first,p.second)
sz
@@ -378,15 +378,15 @@ class=identifier>T
& rbegin(x) - reverse_result_iterator_of<X>::type - reverse_result_iterator_of<X>::type( end(x) )
+ range_reverse_result_iterator<X>::type + range_reverse_result_iterator<X>::type( end(x) )
same as end(x) rend(x) - reverse_result_iterator_of<X>::type - reverse_result_iterator_of<X>::type( begin(x) ) + range_reverse_result_iterator<X>::type + range_reverse_result_iterator<X>::type( begin(x) ) same as begin(x) @@ -409,15 +409,15 @@ be useable as a certain Range concept. Related concept begin() - Single Pass Range + Single Pass Range end() - Single Pass Range + Single Pass Range size() - Forward Range + Forward Range @@ -437,23 +437,23 @@ be useable as a certain Range concept. value_type - Single Pass Range + Single Pass Range iterator - Single Pass Range + Single Pass Range const_iterator - Single Pass Range + Single Pass Range difference_type - Forward Range + Forward Range size_type - Forward Range + Forward Range diff --git a/doc/faq.html b/doc/faq.html index 4a65e49..903f4d5 100755 --- a/doc/faq.html +++ b/doc/faq.html @@ -20,9 +20,8 @@

FAQ

  1. - Why is there no difference between iterator_of<C>::type - and const_iterator_of<C>::type for std::pair<iterator, - iterator>. + Why is there no difference between range_iterator<C>::type + and range_const_iterator<C>::type for std::pair<iterator, iterator>.
  2. In general it is not possible nor desirable to find a corresponding const_iterator. @@ -83,12 +82,12 @@ is somewhat more convenient than a pair.

    namespace range_detail { template< class T > - typename iterator_of<T>:type begin( T& r ) + typename range_iterator<T>:type begin( T& r ) { /* normal implementation */ } } template< class T > - typename iterator_of<T>::type begin( T& r ) + typename range_iterator<T>::type begin( T& r ) { // // Create ADL hook diff --git a/doc/headers.html b/doc/headers.html index a7b1eb2..ad47f95 100755 --- a/doc/headers.html +++ b/doc/headers.html @@ -41,83 +41,87 @@ <boost/range/value_type.hpp> - value_type_of - Single Pass Range + range_value + Single Pass Range <boost/range/iterator.hpp> - iterator_of - Single Pass Range + range_iterator + Single Pass Range <boost/range/const_iterator.hpp> - const_iterator_of - Single Pass Range + range_const_iterator + Single Pass Range <boost/range/difference_type.hpp> - difference_type_of - Forward Range + range_difference + Forward Range <boost/range/size_type.hpp> - size_type_of - Forward Range + range_size + Forward Range <boost/range/result_iterator.hpp> - result_iterator_of + range_result_iterator - <boost/range/reverse_iterator.hpp> - reverse_iterator_of - Bidirectional Range + range_reverse_iterator + Bidirectional Range <boost/range/const_reverse_iterator.hpp> - const_reverse_iterator_of - Bidirectional Range + range_const_reverse_iterator + Bidirectional Range <boost/range/reverse_result_iterator.hpp> - reverse_result_iterator_of + range_reverse_result_iterator - <boost/range/begin.hpp> begin - Single Pass Range + Single Pass Range <boost/range/end.hpp> end - Single Pass Range + Single Pass Range <boost/range/empty.hpp> empty - Single Pass Range + Single Pass Range <boost/range/size.hpp> size - Forward Range + Forward Range <boost/range/rbegin.hpp> rbegin - Bidirectional Range + Bidirectional Range <boost/range/rend.hpp> rend - Bidirectional Range + Bidirectional Range <boost/range/iterator_range.hpp> iterator_range + >iterator_range - diff --git a/doc/intro.html b/doc/intro.html index ecc44e8..7845f21 100755 --- a/doc/intro.html +++ b/doc/intro.html @@ -75,14 +75,15 @@ arrays?) // example: extracting bounds in a generic algorithm // template< class ForwardReadableRange, class T > - inline typename boost::iterator_of< ForwardReadableRange >::type + inline typename boost::range_iterator< ForwardReadableRange >::type find( ForwardReadableRange& c, const T& value ) { return std::find( boost::begin( c ), boost::end( c ), value ); } template< class ForwardReadableRange, class T > - inline typename boost::const_iterator_of< ForwardReadableRange >::type + inline typename boost::range_const_iterator< ForwardReadableRange >::type find( const ForwardReadableRange& c, const T& value ) { return std::find( boost::begin( c ), boost::end( c ), value ); @@ -92,10 +93,10 @@ arrays?) // replace first value and return its index // template< class ForwardReadableWriteableRange, class T > - inline typename boost::size_type_of< ForwardReadableWriteableRange >::type + inline typename boost::range_size< ForwardReadableWriteableRange >::type my_generic_replace( ForwardReadableWriteableRange& c, const T& value, const T& replacement ) { - typename boost::iterator_of< ForwardReadableWriteableRange >::type found = find( c, value ); + typename boost::range_iterator< ForwardReadableWriteableRange >::type found = find( c, value ); if( found != boost::end( c ) ) *found = replacement; @@ -111,11 +112,9 @@ arrays?) my_vector.assign( values, boost::end( values ) ); - typedef std::vector<int>::iterator iterator; - std::pair<iterator,iterator> my_view( boost::begin( my_vector ), - boost::begin( my_vector ) + N ); + typedef std::vector<int>::range_iterator range_iterator; + std::pair<range_iterator,range_iterator> my_view( boost::begin( my_vector ), + boost::begin( my_vector ) + N ); char str_val[] = "a string"; char* str = str_val; diff --git a/doc/range.htm b/doc/range.html similarity index 89% rename from doc/range.htm rename to doc/range.html index 679340c..1d2a677 100755 --- a/doc/range.htm +++ b/doc/range.html @@ -103,7 +103,7 @@ functions as free-standing functions to allow for a layer of indirection.

    Description

    - A range X where iterator_of<X>::type is a model of range_iterator<X>::type is a model of Single Pass Iterator @@ -115,19 +115,19 @@ Single Pass Iterator - + - + - + @@ -155,14 +155,14 @@ Single Pass Iterator - - @@ -243,7 +243,7 @@ otherwise

    Description

    - A range X where iterator_of<X>::type is a model + A range X where range_iterator<X>::type is a model of Forward Traversal Iterator

    @@ -256,14 +256,14 @@ Range
    Value typevalue_type_of<X>::typerange_value<X>::type The type of the object stored in a Range.
    Iterator typeiterator_of<X>::typerange_iterator<X>::type The type of iterator used to iterate through a Range's elements. The iterator's value type is expected to be the Range's value type. A conversion from the iterator type to the const iterator type must exist.
    Const iterator typeconst_iterator_of<X>::typerange_const_iterator<X>::type A type of iterator that may be used to examine, but not to modify, a Range's elements.
    Beginning of range begin(a)iterator_of<X>::type if -a is mutable, const_iterator_of<X>::type + range_iterator<X>::type if +a is mutable, range_const_iterator<X>::type otherwise
    End of range end(a)iterator_of<X>::type if -a is mutable, const_iterator_of<X>::type + range_iterator<X>::type if +a is mutable, range_const_iterator<X>::type otherwise
    - + - + @@ -280,7 +280,7 @@ Range - +
    Distance typedifference_type_of<X>::typerange_difference<X>::type A signed integral type used to represent the distance between two of the Range's iterators. This type must be the same as the iterator's distance type.
    Size typesize_type_of<X>::typerange_size<X>::type An unsigned integral type that can represent any nonnegative value of the Range's distance type.
    Size of range size(a)size_typerange_size<X>::type
    @@ -331,7 +331,7 @@ of elements. Note size(a) == 0u is equivalent to

    Description

    This concept provides access to iterators that traverse in both directions (forward and reverse). The -iterator_of<X>::type iterator must meet all of the requirements +range_iterator<X>::type iterator must meet all of the requirements of Bidirectional Traversal Iterator. @@ -343,7 +343,7 @@ s-lib-bidirectional-traversal-iterators">Bidirectional Traversal Iterator. - + +VAlign="top">range_const_reverse_iterator<X>::type @@ -371,19 +371,19 @@ VAlign="top">const_reverse_iterator_of<X>::type - +range_reverse_iterator<X>::type(end(a)). - +range_reverse_iterator<X>::type(begin(a)).
    Reverse Iterator typereverse_iterator_of<X>::typerange_reverse_iterator<X>::type The type of iterator used to iterate through a Range's elements in reverse order. The iterator's value type is expected to be the Range's value type. A conversion from the reverse iterator type to the const reverse iterator @@ -352,7 +352,7 @@ s-lib-bidirectional-traversal-iterators">Bidirectional Traversal Iterator.
    Const reverse iterator type const_reverse_iterator_of<X>::type A type of reverse iterator that may be used to examine, but not to modify, a Range's elements.
    Beginning of range rbegin(a)reverse_iterator_of<X>::type if -a is mutable, const_reverse_iterator_of<X>::type + range_reverse_iterator<X>::type if +a is mutable, range_const_reverse_iterator<X>::type otherwise. Equivalent to -reverse_iterator_of<X>::type(end(a)).
    End of range rend(a)reverse_iterator_of<X>::type if -a is mutable, const_reverse_iterator_of<X>::type + range_reverse_iterator<X>::type if +a is mutable, range_const_reverse_iterator<X>::type otherwise. Equivalent to -reverse_iterator_of<X>::type(begin(a)).
    @@ -413,7 +413,7 @@ otherwise.

    Random Access Range

    Description

    - A range X where iterator_of<X>::type is a model + A range X where range_iterator<X>::type is a model of Random Access Traversal Iterator diff --git a/doc/style.html b/doc/style.html index 8b7561b..0083217 100755 --- a/doc/style.html +++ b/doc/style.html @@ -46,14 +46,12 @@ Traversal category:

    + Bidirectional Range
  3. + Random Access Range Notice how we have used the categories from the new style iterators. diff --git a/doc/utility_class.html b/doc/utility_class.html index f1d5289..68ca47f 100644 --- a/doc/utility_class.html +++ b/doc/utility_class.html @@ -35,7 +35,8 @@ The iterator_range class is templated on an Forward Traversal Iterator and should be used whenever fairly general code is needed. - The sub_range class is templated on an Forward + The sub_range class is templated on an Forward Range and it is less general, but a bit easier to use since its template argument is easier to specify. The biggest difference is, however, that a sub_range can propagate constness because it knows what a @@ -52,8 +53,8 @@ corresponding const_iterator is.

    The intention of the iterator_range class is to encapsulate two iterators so they fulfill the Forward Range concept. A few other functions - are also provided for convenience. + href="range.html#forward_range">Forward Range concept. A few other +functions are also provided for convenience.

    If the template argument is not a model of Forward Traversal Iterator, one can @@ -209,12 +210,11 @@ class can propagate constness since it knows what a corresponding namespace boost { template< class ForwardRange > - class sub_range : public iterator_range< typename result_iterator_of<ForwardRange>::type > + class sub_range : public iterator_range< typename range_result_iterator<ForwardRange>::type > { public: - typedef typename iterator_of<ForwardRange>::type iterator; - typedef typename const_iterator_of<ForwardRange>::type const_iterator; + typedef typename range_result_iterator<ForwardRange>::type iterator; + typedef typename range_const_iterator<ForwardRange>::type const_iterator; public: // construction, assignment template< class ForwardTraversalIterator >