37 #ifndef VIGRA_ITERATORADAPTER_HXX
38 #define VIGRA_ITERATORADAPTER_HXX
147 template <
class Policy>
152 typedef typename Policy::BaseType BaseType;
153 typedef typename Policy::value_type value_type;
154 typedef typename Policy::difference_type difference_type;
155 typedef typename Policy::reference reference;
156 typedef typename Policy::index_reference index_reference;
157 typedef typename Policy::pointer pointer;
158 typedef typename Policy::iterator_category iterator_category;
172 Policy::initialize(adaptee_);
176 : adaptee_(o.adaptee_)
179 IteratorAdaptor & operator=(BaseType
const & o)
184 Policy::initialize(adaptee_);
189 IteratorAdaptor & operator=(IteratorAdaptor
const & o)
192 adaptee_ = o.adaptee_;
196 IteratorAdaptor & operator+=(difference_type d)
198 Policy::advance(adaptee_, d);
202 IteratorAdaptor operator+(difference_type d)
const
204 return IteratorAdaptor(*
this) += d;
207 IteratorAdaptor & operator-=(difference_type d)
209 Policy::advance(adaptee_, -d);
213 IteratorAdaptor operator-(difference_type d)
const
215 return IteratorAdaptor(*
this) -= d;
218 IteratorAdaptor & operator++()
220 Policy::increment(adaptee_);
224 IteratorAdaptor operator++(
int)
226 IteratorAdaptor res(*
this);
227 Policy::increment(adaptee_);
231 IteratorAdaptor & operator--()
233 Policy::decrement(adaptee_);
237 IteratorAdaptor operator--(
int)
239 IteratorAdaptor res(*
this);
240 Policy::decrement(adaptee_);
244 bool operator==(IteratorAdaptor
const & o)
const
246 return Policy::equal(adaptee_, o.adaptee_);
249 bool operator!=(IteratorAdaptor
const & o)
const
251 return !Policy::equal(adaptee_, o.adaptee_);
254 bool operator<(IteratorAdaptor
const & o)
const
256 return Policy::less(adaptee_, o.adaptee_);
259 bool operator<=(IteratorAdaptor
const & o)
const
261 return !Policy::less(o.adaptee_, adaptee_);
264 bool operator>(IteratorAdaptor
const & o)
const
266 return Policy::less(o.adaptee_, adaptee_);
269 bool operator>=(IteratorAdaptor
const & o)
const
271 return !Policy::less(adaptee_, o.adaptee_);
274 difference_type operator-(IteratorAdaptor
const & o)
const
276 return Policy::difference(adaptee_, o.adaptee_);
279 reference operator*()
const
281 return Policy::dereference(adaptee_);
284 index_reference operator[](difference_type d)
const
286 return Policy::dereference(adaptee_, d);
289 pointer operator->()
const
291 return &Policy::dereference(adaptee_);
IteratorAdaptor(BaseType const &o)
Definition: iteratoradapter.hxx:169
Quickly create 1-dimensional iterator adapters.
Definition: iteratoradapter.hxx:148