mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-20 16:12:10 +02:00
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 [SVN r9003]
This commit is contained in:
@ -12,6 +12,18 @@
|
|||||||
//
|
//
|
||||||
// Revision History:
|
// 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
|
// 06 Feb 2001
|
||||||
// Produce operator-> proxy objects for InputIterators
|
// Produce operator-> proxy objects for InputIterators
|
||||||
//
|
//
|
||||||
@ -335,8 +347,8 @@ namespace detail {
|
|||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
// iterator_adaptor - A generalized adaptor around an existing
|
//iterator_adaptor - Adapts a generic piece of data as an iterator. Adaptation
|
||||||
// iterator, which is itself an iterator
|
// is especially easy if the data being adapted is itself an iterator
|
||||||
//
|
//
|
||||||
// Iterator - the iterator type being wrapped.
|
// Iterator - the iterator type being wrapped.
|
||||||
//
|
//
|
||||||
@ -347,11 +359,7 @@ namespace detail {
|
|||||||
// std::iterator_traits for the resulting iterator.
|
// std::iterator_traits for the resulting iterator.
|
||||||
//
|
//
|
||||||
template <class Iterator, class Policies,
|
template <class Iterator, class Policies,
|
||||||
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
class Traits = boost::detail::iterator_traits<Iterator>
|
||||||
class Traits
|
|
||||||
#else
|
|
||||||
class Traits = std::iterator_traits<Iterator>
|
|
||||||
#endif
|
|
||||||
>
|
>
|
||||||
struct iterator_adaptor :
|
struct iterator_adaptor :
|
||||||
#ifdef BOOST_RELOPS_AMBIGUITY_BUG
|
#ifdef BOOST_RELOPS_AMBIGUITY_BUG
|
||||||
@ -539,28 +547,6 @@ operator!=(const iterator_adaptor<Iterator1,Policies,Traits1>& x,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//=============================================================================
|
|
||||||
// iterator_adaptor_pair_generator - A type generator that simplifies creating
|
|
||||||
// mutable/const pairs of iterator adaptors.
|
|
||||||
|
|
||||||
template <class Iterator, class ConstIterator,
|
|
||||||
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
|
||||||
class Traits,
|
|
||||||
class ConstTraits,
|
|
||||||
#else
|
|
||||||
class Traits = std::iterator_traits<Iterator>,
|
|
||||||
class ConstTraits = std::iterator_traits<ConstIterator>,
|
|
||||||
#endif
|
|
||||||
class Policies = default_iterator_policies>
|
|
||||||
class iterator_adaptor_pair_generator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef iterator_adaptor<Iterator, Policies, Traits> iterator;
|
|
||||||
typedef iterator_adaptor<ConstIterator, Policies, ConstTraits>
|
|
||||||
const_iterator;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// Transform Iterator Adaptor
|
// Transform Iterator Adaptor
|
||||||
//
|
//
|
||||||
@ -635,14 +621,9 @@ struct indirect_iterator_policies : public default_iterator_policies
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class OuterIterator,
|
template <class OuterIterator,
|
||||||
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
class InnerIterator = typename boost::detail::iterator_traits<OuterIterator>::value_type,
|
||||||
class InnerIterator,
|
class InnerTraits = boost::detail::iterator_traits<InnerIterator>,
|
||||||
class InnerTraits,
|
class OuterTraits = boost::detail::iterator_traits<OuterIterator> // never needed (?)
|
||||||
#else
|
|
||||||
class InnerIterator = typename std::iterator_traits<OuterIterator>::value_type,
|
|
||||||
class InnerTraits = std::iterator_traits<InnerIterator>,
|
|
||||||
#endif
|
|
||||||
class OuterTraits = boost::detail::iterator_traits<OuterIterator>
|
|
||||||
>
|
>
|
||||||
struct indirect_traits
|
struct indirect_traits
|
||||||
{
|
{
|
||||||
@ -654,15 +635,10 @@ struct indirect_traits
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class OuterIterator, // Mutable or Immutable, does not matter
|
template <class OuterIterator, // Mutable or Immutable, does not matter
|
||||||
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
// Mutable -> mutable indirect iterator; Immutable -> immutable indirect iterator
|
||||||
class InnerIterator, // Mutable -> mutable indirect iterator
|
class InnerIterator = typename boost::detail::iterator_traits<OuterIterator>::value_type,
|
||||||
// Immutable -> immutable indirect iterator
|
class InnerTraits = boost::detail::iterator_traits<InnerIterator>,
|
||||||
class InnerTraits,
|
class OuterTraits = boost::detail::iterator_traits<OuterIterator> // never needed (?)
|
||||||
#else
|
|
||||||
class InnerIterator = typename std::iterator_traits<OuterIterator>::value_type,
|
|
||||||
class InnerTraits = std::iterator_traits<InnerIterator>,
|
|
||||||
#endif
|
|
||||||
class OuterTraits = boost::detail::iterator_traits<OuterIterator>
|
|
||||||
>
|
>
|
||||||
struct indirect_iterator_generator
|
struct indirect_iterator_generator
|
||||||
{
|
{
|
||||||
@ -675,28 +651,20 @@ struct indirect_iterator_generator
|
|||||||
|
|
||||||
template <class OuterIterator, // Mutable or Immutable, does not matter
|
template <class OuterIterator, // Mutable or Immutable, does not matter
|
||||||
class ConstInnerIterator, // Immutable
|
class ConstInnerIterator, // Immutable
|
||||||
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
class ConstInnerTraits = boost::detail::iterator_traits<ConstInnerIterator>,
|
||||||
class ConstInnerTraits,
|
class InnerIterator = typename boost::detail::iterator_traits<OuterIterator>::value_type,
|
||||||
class InnerIterator, // Mutable
|
class InnerTraits = boost::detail::iterator_traits<InnerIterator>,
|
||||||
class InnerTraits,
|
class OuterTraits = boost::detail::iterator_traits<OuterIterator> // never needed (?)
|
||||||
#else
|
|
||||||
class ConstInnerTraits = std::iterator_traits<ConstInnerIterator>,
|
|
||||||
class InnerIterator = typename std::iterator_traits<OuterIterator>::value_type,
|
|
||||||
class InnerTraits = std::iterator_traits<InnerIterator>,
|
|
||||||
#endif
|
|
||||||
class OuterTraits = boost::detail::iterator_traits<OuterIterator>
|
|
||||||
>
|
>
|
||||||
struct indirect_iterator_pair_generator
|
struct indirect_iterator_pair_generator
|
||||||
{
|
{
|
||||||
typedef iterator_adaptor_pair_generator<OuterIterator, OuterIterator,
|
typedef iterator_adaptor<OuterIterator,
|
||||||
indirect_traits<OuterIterator, InnerIterator,
|
indirect_traits<OuterIterator, InnerIterator, InnerTraits, OuterTraits>,
|
||||||
InnerTraits, OuterTraits>,
|
indirect_iterator_policies> iterator;
|
||||||
indirect_traits<OuterIterator, ConstInnerIterator,
|
|
||||||
ConstInnerTraits, OuterTraits>,
|
typedef iterator_adaptor<OuterIterator,
|
||||||
indirect_iterator_policies
|
indirect_traits<OuterIterator, ConstInnerIterator, ConstInnerTraits, OuterTraits>,
|
||||||
> pair_generator;
|
indirect_iterator_policies> const_iterator;
|
||||||
typedef typename pair_generator::iterator iterator;
|
|
||||||
typedef typename pair_generator::const_iterator const_iterator;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -736,11 +704,7 @@ struct reverse_iterator_policies : public default_iterator_policies
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class Iterator,
|
template <class Iterator,
|
||||||
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
|
class Traits = boost::detail::iterator_traits<Iterator>
|
||||||
class Traits = std::iterator_traits<Iterator>
|
|
||||||
#else
|
|
||||||
class Traits
|
|
||||||
#endif
|
|
||||||
>
|
>
|
||||||
struct reverse_iterator_generator
|
struct reverse_iterator_generator
|
||||||
{
|
{
|
||||||
@ -749,11 +713,7 @@ struct reverse_iterator_generator
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class ConstIterator,
|
template <class ConstIterator,
|
||||||
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
|
class ConstTraits = boost::detail::iterator_traits<ConstIterator>
|
||||||
class ConstTraits = std::iterator_traits<ConstIterator>
|
|
||||||
#else
|
|
||||||
class ConstTraits
|
|
||||||
#endif
|
|
||||||
>
|
>
|
||||||
struct const_reverse_iterator_generator
|
struct const_reverse_iterator_generator
|
||||||
{
|
{
|
||||||
@ -761,23 +721,6 @@ struct const_reverse_iterator_generator
|
|||||||
ConstTraits> type;
|
ConstTraits> type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class Iterator, class ConstIterator,
|
|
||||||
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
|
|
||||||
class Traits = std::iterator_traits<Iterator>,
|
|
||||||
class ConstTraits = std::iterator_traits<ConstIterator>
|
|
||||||
#else
|
|
||||||
class Traits,
|
|
||||||
class ConstTraits
|
|
||||||
#endif
|
|
||||||
>
|
|
||||||
struct reverse_iterator_pair_generator
|
|
||||||
{
|
|
||||||
typedef iterator_adaptor_pair_generator<Iterator,ConstIterator,Traits,ConstTraits,
|
|
||||||
reverse_iterator_policies> pair_generator;
|
|
||||||
typedef typename pair_generator::iterator iterator;
|
|
||||||
typedef typename pair_generator::const_iterator const_iterator;
|
|
||||||
};
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// Projection Iterators Adaptor
|
// Projection Iterators Adaptor
|
||||||
|
|
||||||
@ -818,10 +761,10 @@ template <class AdaptableUnaryFunction, class Iterator,
|
|||||||
>
|
>
|
||||||
struct projection_iterator_generator {
|
struct projection_iterator_generator {
|
||||||
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
|
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
|
||||||
Projection_Traits;
|
projection_traits;
|
||||||
typedef iterator_adaptor<Iterator,
|
typedef iterator_adaptor<Iterator,
|
||||||
projection_iterator_policies<AdaptableUnaryFunction>,
|
projection_iterator_policies<AdaptableUnaryFunction>,
|
||||||
Projection_Traits> type;
|
projection_traits> type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class AdaptableUnaryFunction, class Iterator,
|
template <class AdaptableUnaryFunction, class Iterator,
|
||||||
@ -829,10 +772,10 @@ template <class AdaptableUnaryFunction, class Iterator,
|
|||||||
>
|
>
|
||||||
struct const_projection_iterator_generator {
|
struct const_projection_iterator_generator {
|
||||||
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
|
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
|
||||||
Traits> Projection_Traits;
|
Traits> projection_traits;
|
||||||
typedef iterator_adaptor<Iterator,
|
typedef iterator_adaptor<Iterator,
|
||||||
projection_iterator_policies<AdaptableUnaryFunction>,
|
projection_iterator_policies<AdaptableUnaryFunction>,
|
||||||
Projection_Traits> type;
|
projection_traits> type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class AdaptableUnaryFunction, class Iterator, class ConstIterator,
|
template <class AdaptableUnaryFunction, class Iterator, class ConstIterator,
|
||||||
@ -841,14 +784,13 @@ template <class AdaptableUnaryFunction, class Iterator, class ConstIterator,
|
|||||||
>
|
>
|
||||||
struct projection_iterator_pair_generator {
|
struct projection_iterator_pair_generator {
|
||||||
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
|
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
|
||||||
Projection_Traits;
|
projection_traits;
|
||||||
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
|
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
|
||||||
ConstTraits> Const_Projection_Traits;
|
ConstTraits> const_projection_traits;
|
||||||
typedef iterator_adaptor_pair_generator<Iterator, ConstIterator,
|
typedef iterator_adaptor<Iterator, projection_iterator_policies<AdaptableUnaryFunction>,
|
||||||
Projection_Traits, Const_Projection_Traits,
|
projection_traits> iterator;
|
||||||
projection_iterator_policies<AdaptableUnaryFunction> > pair_generator;
|
typedef iterator_adaptor<ConstIterator, projection_iterator_policies<AdaptableUnaryFunction>,
|
||||||
typedef typename pair_generator::iterator iterator;
|
const_projection_traits > const_iterator;
|
||||||
typedef typename pair_generator::const_iterator const_iterator;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@ -884,11 +826,7 @@ struct projection_iterator_pair_generator {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class Predicate, class Iterator,
|
template <class Predicate, class Iterator,
|
||||||
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
|
class Traits = boost::detail::iterator_traits<Iterator>
|
||||||
class Traits = std::iterator_traits<Iterator>
|
|
||||||
#else
|
|
||||||
class Traits
|
|
||||||
#endif
|
|
||||||
>
|
>
|
||||||
class filter_iterator_generator {
|
class filter_iterator_generator {
|
||||||
typedef filter_iterator_policies<Predicate, Iterator> Policies;
|
typedef filter_iterator_policies<Predicate, Iterator> Policies;
|
||||||
|
Reference in New Issue
Block a user