35 #ifndef VIGRA_ITERATORADAPTER_HXX 
   36 #define VIGRA_ITERATORADAPTER_HXX 
  146 template <
class Policy>
 
  151     typedef typename Policy::BaseType BaseType;
 
  152     typedef typename Policy::value_type        value_type;
 
  153     typedef typename Policy::difference_type   difference_type;
 
  154     typedef typename Policy::reference         reference;
 
  155     typedef typename Policy::index_reference   index_reference;
 
  156     typedef typename Policy::pointer           pointer;
 
  157     typedef typename Policy::iterator_category iterator_category;
 
  171         Policy::initialize(adaptee_);
 
  175     : adaptee_(o.adaptee_)
 
  178     IteratorAdaptor & operator=(BaseType 
const & o)
 
  183             Policy::initialize(adaptee_);
 
  188     IteratorAdaptor & operator=(IteratorAdaptor 
const & o)
 
  191             adaptee_ = o.adaptee_;
 
  195     IteratorAdaptor & operator+=(difference_type d)
 
  197         Policy::advance(adaptee_, d);
 
  201     IteratorAdaptor operator+(difference_type d)
 const 
  203         return IteratorAdaptor(*
this) += d;
 
  206     IteratorAdaptor & operator-=(difference_type d)
 
  208         Policy::advance(adaptee_, -d);
 
  212     IteratorAdaptor operator-(difference_type d)
 const 
  214         return IteratorAdaptor(*
this) -= d;
 
  217     IteratorAdaptor & operator++()
 
  219         Policy::increment(adaptee_);
 
  223     IteratorAdaptor operator++(
int)
 
  225         IteratorAdaptor res(*
this);
 
  226         Policy::increment(adaptee_);
 
  230     IteratorAdaptor & operator--()
 
  232         Policy::decrement(adaptee_);
 
  236     IteratorAdaptor operator--(
int)
 
  238         IteratorAdaptor res(*
this);
 
  239         Policy::decrement(adaptee_);
 
  243     bool operator==(IteratorAdaptor 
const & o)
 const 
  245         return Policy::equal(adaptee_, o.adaptee_);
 
  248     bool operator!=(IteratorAdaptor 
const & o)
 const 
  250         return !Policy::equal(adaptee_, o.adaptee_);
 
  253     bool operator<(IteratorAdaptor 
const & o)
 const 
  255         return Policy::less(adaptee_, o.adaptee_);
 
  258     bool operator<=(IteratorAdaptor 
const & o)
 const 
  260         return !Policy::less(o.adaptee_, adaptee_);
 
  263     bool operator>(IteratorAdaptor 
const & o)
 const 
  265         return Policy::less(o.adaptee_, adaptee_);
 
  268     bool operator>=(IteratorAdaptor 
const & o)
 const 
  270         return !Policy::less(adaptee_, o.adaptee_);
 
  273     difference_type operator-(IteratorAdaptor 
const & o)
 const 
  275         return Policy::difference(adaptee_, o.adaptee_);
 
  278     reference operator*()
 const 
  280         return Policy::dereference(adaptee_);
 
  283     index_reference operator[](difference_type d)
 const 
  285         return Policy::dereference(adaptee_, d);
 
  288     pointer operator->()
 const 
  290         return &Policy::dereference(adaptee_);
 
  305 namespace detail_iterator_facade{
 
IteratorAdaptor(BaseType const &o)
Definition: iteratoradapter.hxx:168
Quickly create 1-dimensional iterator adapters. 
Definition: iteratoradapter.hxx:147