added iterator_adaptors type generator, added copyright for jsiek

[SVN r7649]
This commit is contained in:
Jeremy Siek
2000-07-27 14:51:22 +00:00
parent d75da09a25
commit 022f3a00d3

View File

@ -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