diff --git a/include/boost/iterator_adaptors.hpp b/include/boost/iterator_adaptors.hpp index 479e90c..47d4001 100644 --- a/include/boost/iterator_adaptors.hpp +++ b/include/boost/iterator_adaptors.hpp @@ -12,6 +12,18 @@ // // Revision History: +// 07 Feb 2001 +// Removed iterator_adaptor_pair_generator and +// reverse_iterator_pair_generator (more such culling to come) +// +// Improved comments +// +// Changed all uses of std::iterator_traits as default arguments +// to boost::detail::iterator_traits for improved utility in +// non-generic contexts +// +// Fixed naming convention of non-template parameter names +// // 06 Feb 2001 // Produce operator-> proxy objects for InputIterators // @@ -335,8 +347,8 @@ namespace detail { } // namespace detail //============================================================================ -// iterator_adaptor - A generalized adaptor around an existing -// iterator, which is itself an iterator +//iterator_adaptor - Adapts a generic piece of data as an iterator. Adaptation +// is especially easy if the data being adapted is itself an iterator // // Iterator - the iterator type being wrapped. // @@ -347,11 +359,7 @@ namespace detail { // std::iterator_traits for the resulting iterator. // template -#endif + class Traits = boost::detail::iterator_traits > struct iterator_adaptor : #ifdef BOOST_RELOPS_AMBIGUITY_BUG @@ -539,28 +547,6 @@ operator!=(const iterator_adaptor& x, } #endif -//============================================================================= -// iterator_adaptor_pair_generator - A type generator that simplifies creating -// mutable/const pairs of iterator adaptors. - -template , - class ConstTraits = std::iterator_traits, -#endif - class Policies = default_iterator_policies> -class iterator_adaptor_pair_generator -{ -public: - typedef iterator_adaptor iterator; - typedef iterator_adaptor - const_iterator; -}; - - //============================================================================= // Transform Iterator Adaptor // @@ -635,14 +621,9 @@ struct indirect_iterator_policies : public default_iterator_policies }; template ::value_type, - class InnerTraits = std::iterator_traits, -#endif - class OuterTraits = boost::detail::iterator_traits + class InnerIterator = typename boost::detail::iterator_traits::value_type, + class InnerTraits = boost::detail::iterator_traits, + class OuterTraits = boost::detail::iterator_traits // never needed (?) > struct indirect_traits { @@ -654,15 +635,10 @@ struct indirect_traits }; template mutable indirect iterator - // Immutable -> immutable indirect iterator - class InnerTraits, -#else - class InnerIterator = typename std::iterator_traits::value_type, - class InnerTraits = std::iterator_traits, -#endif - class OuterTraits = boost::detail::iterator_traits + // Mutable -> mutable indirect iterator; Immutable -> immutable indirect iterator + class InnerIterator = typename boost::detail::iterator_traits::value_type, + class InnerTraits = boost::detail::iterator_traits, + class OuterTraits = boost::detail::iterator_traits // never needed (?) > struct indirect_iterator_generator { @@ -675,28 +651,20 @@ struct indirect_iterator_generator template , - class InnerIterator = typename std::iterator_traits::value_type, - class InnerTraits = std::iterator_traits, -#endif - class OuterTraits = boost::detail::iterator_traits + class ConstInnerTraits = boost::detail::iterator_traits, + class InnerIterator = typename boost::detail::iterator_traits::value_type, + class InnerTraits = boost::detail::iterator_traits, + class OuterTraits = boost::detail::iterator_traits // never needed (?) > struct indirect_iterator_pair_generator { - typedef iterator_adaptor_pair_generator, - indirect_traits, - indirect_iterator_policies - > pair_generator; - typedef typename pair_generator::iterator iterator; - typedef typename pair_generator::const_iterator const_iterator; + typedef iterator_adaptor, + indirect_iterator_policies> iterator; + + typedef iterator_adaptor, + indirect_iterator_policies> const_iterator; }; @@ -736,11 +704,7 @@ struct reverse_iterator_policies : public default_iterator_policies }; template -#else - class Traits -#endif + class Traits = boost::detail::iterator_traits > struct reverse_iterator_generator { @@ -749,11 +713,7 @@ struct reverse_iterator_generator }; template -#else - class ConstTraits -#endif + class ConstTraits = boost::detail::iterator_traits > struct const_reverse_iterator_generator { @@ -761,23 +721,6 @@ struct const_reverse_iterator_generator ConstTraits> type; }; -template , - class ConstTraits = std::iterator_traits -#else - class Traits, - class ConstTraits -#endif - > -struct reverse_iterator_pair_generator -{ - typedef iterator_adaptor_pair_generator pair_generator; - typedef typename pair_generator::iterator iterator; - typedef typename pair_generator::const_iterator const_iterator; -}; - //============================================================================= // Projection Iterators Adaptor @@ -818,10 +761,10 @@ template struct projection_iterator_generator { typedef projection_iterator_traits - Projection_Traits; + projection_traits; typedef iterator_adaptor, - Projection_Traits> type; + projection_traits> type; }; template struct const_projection_iterator_generator { typedef const_projection_iterator_traits Projection_Traits; + Traits> projection_traits; typedef iterator_adaptor, - Projection_Traits> type; + projection_traits> type; }; template struct projection_iterator_pair_generator { typedef projection_iterator_traits - Projection_Traits; + projection_traits; typedef const_projection_iterator_traits Const_Projection_Traits; - typedef iterator_adaptor_pair_generator > pair_generator; - typedef typename pair_generator::iterator iterator; - typedef typename pair_generator::const_iterator const_iterator; + ConstTraits> const_projection_traits; + typedef iterator_adaptor, + projection_traits> iterator; + typedef iterator_adaptor, + const_projection_traits > const_iterator; }; //============================================================================= @@ -884,11 +826,7 @@ struct projection_iterator_pair_generator { }; template -#else - class Traits -#endif + class Traits = boost::detail::iterator_traits > class filter_iterator_generator { typedef filter_iterator_policies Policies;