forked from boostorg/iterator
added iterator_adaptors type generator, added copyright for jsiek
[SVN r7649]
This commit is contained in:
@ -1,7 +1,14 @@
|
|||||||
// (C) Copyright David Abrahams 2000. Permission to copy, use, modify, sell and
|
// (C) Copyright David Abrahams 2000. Permission to copy, use,
|
||||||
// distribute this software is granted provided this copyright notice appears
|
// modify, sell and distribute this software is granted provided this
|
||||||
// in all copies. This software is provided "as is" without express or implied
|
// copyright notice appears in all copies. This software is provided
|
||||||
// warranty, and with no claim as to its suitability for any purpose.
|
// "as is" without express or implied warranty, and with no claim as
|
||||||
|
// to its suitability for any purpose.
|
||||||
|
|
||||||
|
// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify,
|
||||||
|
// sell and distribute this software is granted provided this
|
||||||
|
// copyright notice appears in all copies. This software is provided
|
||||||
|
// "as is" without express or implied warranty, and with no claim as
|
||||||
|
// to its suitability for any purpose.
|
||||||
|
|
||||||
#ifndef BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
|
#ifndef BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
|
||||||
# define BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
|
# define BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
|
||||||
@ -18,7 +25,8 @@ namespace boost {
|
|||||||
template <class T>
|
template <class T>
|
||||||
struct type {};
|
struct type {};
|
||||||
|
|
||||||
// Default policies for wrapped iterators. You can use this as a base
|
//=============================================================================
|
||||||
|
// Default policies for iterator adaptors. You can use this as a base
|
||||||
// class if you want to customize particular policies.
|
// class if you want to customize particular policies.
|
||||||
struct default_iterator_policies
|
struct default_iterator_policies
|
||||||
{
|
{
|
||||||
@ -51,7 +59,7 @@ struct default_iterator_policies
|
|||||||
{ return x < y; }
|
{ return x < y; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// iterator_adaptor - A generalized adaptor around an existing iterator, which is itself an iterator
|
//=============================================================================// iterator_adaptor - A generalized adaptor around an existing iterator, which is itself an iterator
|
||||||
//
|
//
|
||||||
// Iterator - the iterator type being wrapped.
|
// Iterator - the iterator type being wrapped.
|
||||||
//
|
//
|
||||||
@ -66,7 +74,7 @@ struct default_iterator_policies
|
|||||||
// std::iterator_traits for the resulting iterator.
|
// std::iterator_traits for the resulting iterator.
|
||||||
//
|
//
|
||||||
template <class Iterator, class Policies,
|
template <class Iterator, class Policies,
|
||||||
#ifndef BOOST_NO_ITERATOR_TRAITS
|
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
class Traits = std::iterator_traits<Iterator>,
|
class Traits = std::iterator_traits<Iterator>,
|
||||||
#else
|
#else
|
||||||
class Traits,
|
class Traits,
|
||||||
@ -213,6 +221,28 @@ operator!=(const iterator_adaptor<Iterator1,Policies,Traits1,NonconstIterator>&
|
|||||||
return !Policies::equal(x.m_impl, y.m_impl);
|
return !Policies::equal(x.m_impl, y.m_impl);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
//=============================================================================
|
||||||
|
// iterator_adaptors - 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_adaptors
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef iterator_adaptor<Iterator, Policies, Iterator, Traits> iterator;
|
||||||
|
typedef iterator_adaptor<ConstIterator, Policies, Iterator, ConstTraits>
|
||||||
|
const_iterator;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user