37 #ifndef VIGRA_ITERATORTRAITS_HXX 
   38 #define VIGRA_ITERATORTRAITS_HXX 
   40 #include "accessor.hxx" 
   41 #include "imageiteratoradapter.hxx" 
  112     typedef Iterator                                   iterator;
 
  113     typedef typename iterator::iterator_category       iterator_category;
 
  114     typedef typename iterator::value_type              value_type;
 
  115     typedef typename iterator::reference               reference;
 
  116     typedef typename iterator::index_reference         index_reference;
 
  117     typedef typename iterator::pointer                 pointer;
 
  118     typedef typename iterator::difference_type         difference_type;
 
  119     typedef typename iterator::row_iterator            row_iterator;
 
  120     typedef typename iterator::column_iterator         column_iterator;
 
  126     typedef VigraFalseType                             hasConstantStrides;
 
  130 struct IteratorTraitsBase
 
  133     typedef Iterator                              iterator;
 
  134     typedef typename iterator::iterator_category  iterator_category;
 
  135     typedef typename iterator::value_type         value_type;
 
  136     typedef typename iterator::reference          reference;
 
  137     typedef typename iterator::index_reference    index_reference;
 
  138     typedef typename iterator::pointer            pointer;
 
  139     typedef typename iterator::difference_type    difference_type;
 
  140     typedef typename iterator::row_iterator       row_iterator;
 
  141     typedef typename iterator::column_iterator    column_iterator;
 
  616 template <
class Iterator, 
class Accessor>
 
  617 inline triple<Iterator, Iterator, Accessor>
 
  618 srcIterRange(Iterator 
const & upperleft, Iterator 
const & lowerright, Accessor a)
 
  620     return triple<Iterator, Iterator, Accessor>(upperleft, lowerright, a);
 
  623 template <
class Iterator, 
class Accessor>
 
  624 inline pair<Iterator, Accessor>
 
  625 srcIter(Iterator 
const & upperleft, Accessor a)
 
  627     return pair<Iterator, Accessor>(upperleft, a);
 
  630 template <
class Iterator, 
class Accessor>
 
  631 inline pair<Iterator, Accessor>
 
  632 maskIter(Iterator 
const & upperleft, Accessor a)
 
  634     return pair<Iterator, Accessor>(upperleft, a);
 
  637 template <
class Iterator, 
class Accessor>
 
  638 inline pair<Iterator, Accessor>
 
  639 destIter(Iterator 
const & upperleft, Accessor a)
 
  641     return pair<Iterator, Accessor>(upperleft, a);
 
  645 template <
class Iterator, 
class Accessor>
 
  646 inline triple<Iterator, Iterator, Accessor>
 
  647 destIterRange(Iterator 
const & upperleft, Iterator 
const & lowerright, Accessor a)
 
  649     return triple<Iterator, Iterator, Accessor>(upperleft, lowerright, a);
 
  652 template <
class Iterator>
 
  653 inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
 
  654 srcIter(Iterator 
const & upperleft)
 
  656     return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
 
  658                   typename IteratorTraits<Iterator>::DefaultAccessor());
 
  661 template <
class Iterator>
 
  662 inline triple<Iterator, Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
 
  663 srcIterRange(Iterator 
const & upperleft, Iterator 
const & lowerright)
 
  665     return triple<Iterator, Iterator,
 
  666                   typename IteratorTraits<Iterator>::DefaultAccessor>(
 
  667                   upperleft, lowerright,
 
  668                   typename IteratorTraits<Iterator>::DefaultAccessor());
 
  671 template <
class Iterator>
 
  672 inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
 
  673 maskIter(Iterator 
const & upperleft)
 
  675     return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
 
  677                   typename IteratorTraits<Iterator>::DefaultAccessor());
 
  680 template <
class Iterator>
 
  681 inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
 
  682 destIter(Iterator 
const & upperleft)
 
  684     return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
 
  686                   typename IteratorTraits<Iterator>::DefaultAccessor());
 
  689 template <
class Iterator>
 
  690 inline triple<Iterator, Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
 
  691 destIterRange(Iterator 
const & upperleft, Iterator 
const & lowerright)
 
  693     return triple<Iterator, Iterator,
 
  694                   typename IteratorTraits<Iterator>::DefaultAccessor>(
 
  695                   upperleft, lowerright,
 
  696                   typename IteratorTraits<Iterator>::DefaultAccessor());
 
  701 #endif // VIGRA_ITERATORTRAITS_HXX 
Export associated information for each image iterator. 
Definition: iteratortraits.hxx:109
Encapsulate access to the values an iterator points to. 
Definition: accessor.hxx:133