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