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;
122 AccessorTraits<value_type>::default_accessor DefaultAccessor;
123 typedef DefaultAccessor default_accessor;
126 typedef VigraFalseType hasConstantStrides;
130struct IteratorTraitsBase
133 typedef Iterator iterator;
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;
140 typedef typename iterator::row_iterator row_iterator;
141 typedef typename iterator::column_iterator column_iterator;
616template <
class Iterator,
class Accessor>
617inline triple<Iterator, Iterator, Accessor>
618srcIterRange(Iterator
const & upperleft, Iterator
const & lowerright, Accessor a)
620 return triple<Iterator, Iterator, Accessor>(upperleft, lowerright, a);
623template <
class Iterator,
class Accessor>
624inline pair<Iterator, Accessor>
625srcIter(Iterator
const & upperleft,
Accessor a)
627 return pair<Iterator, Accessor>(upperleft, a);
630template <
class Iterator,
class Accessor>
631inline pair<Iterator, Accessor>
632maskIter(Iterator
const & upperleft,
Accessor a)
634 return pair<Iterator, Accessor>(upperleft, a);
637template <
class Iterator,
class Accessor>
638inline pair<Iterator, Accessor>
639destIter(Iterator
const & upperleft,
Accessor a)
641 return pair<Iterator, Accessor>(upperleft, a);
645template <
class Iterator,
class Accessor>
646inline triple<Iterator, Iterator, Accessor>
647destIterRange(Iterator
const & upperleft, Iterator
const & lowerright,
Accessor a)
649 return triple<Iterator, Iterator, Accessor>(upperleft, lowerright, a);
652template <
class Iterator>
653inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
654srcIter(Iterator
const & upperleft)
656 return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
658 typename IteratorTraits<Iterator>::DefaultAccessor());
661template <
class Iterator>
662inline triple<Iterator, Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
663srcIterRange(Iterator
const & upperleft, Iterator
const & lowerright)
665 return triple<Iterator, Iterator,
666 typename IteratorTraits<Iterator>::DefaultAccessor>(
667 upperleft, lowerright,
668 typename IteratorTraits<Iterator>::DefaultAccessor());
671template <
class Iterator>
672inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
673maskIter(Iterator
const & upperleft)
675 return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
677 typename IteratorTraits<Iterator>::DefaultAccessor());
680template <
class Iterator>
681inline pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
682destIter(Iterator
const & upperleft)
684 return pair<Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>(
686 typename IteratorTraits<Iterator>::DefaultAccessor());
689template <
class Iterator>
690inline triple<Iterator, Iterator, typename IteratorTraits<Iterator>::DefaultAccessor>
691destIterRange(Iterator
const & upperleft, Iterator
const & lowerright)
693 return triple<Iterator, Iterator,
694 typename IteratorTraits<Iterator>::DefaultAccessor>(
695 upperleft, lowerright,
696 typename IteratorTraits<Iterator>::DefaultAccessor());
Export associated information for each image iterator.
Definition iteratortraits.hxx:110