[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

List of all members
IteratorTraits< T > Struct Template Reference

Export associated information for each image iterator. More...

`#include <vigra/iteratortraits.hxx>`

## Detailed Description

template<class T>
struct vigra::IteratorTraits< T >

Export associated information for each image iterator.

The IteratorTraits class contains the following fields:

template <class T>
struct IteratorTraits
{
typedef T Iterator;
typedef Iterator iterator;
typedef typename iterator::iterator_category iterator_category;
typedef typename iterator::value_type value_type;
typedef typename iterator::reference reference;
typedef typename iterator::index_reference index_reference;
typedef typename iterator::pointer pointer;
typedef typename iterator::difference_type difference_type;
typedef typename iterator::row_iterator row_iterator;
typedef typename iterator::column_iterator column_iterator;
typedef typename
AccessorTraits<value_type>::default_accessor DefaultAccessor;
typedef DefaultAccessor default_accessor;
typedef VigraTrueType/VigraFalseType hasConstantStrides;
};
vigra::IteratorTraits
Export associated information for each image iterator.
Definition iteratortraits.hxx:110

By (partially) specializing this template for an iterator class the defaults given above can be changed as appropriate. For example, iterators for rgb images are associated with RGBAccessor<value_type> instead of StandardAccessor<value_type>. To get the accessor associated with a given iterator, use code like this:

template <class Iterator>
void foo(Iterator i)
{
typedef typename IteratorTraits<Iterator>::DefaultAccessor Accessor;
Accessor a;
...
}
vigra::Accessor

This technique is, for example, used by the Iterator Based Argument Object Factories. The possibility to retrieve the default accessor by means of a traits class is especially important since this information is not contained in the iterator directly.

The member hasConstantStrides is useful for certain optimizations: it helps to decide whether we can replace iterator operations such as iter++ or iter += n with corresponding pointer operations (which may be faster), where the pointer is obtained as the address of iterator's pointee (the object the iterator currently refers to). This flag would be VigraFalseType for a std::list<int>::iterator, but is VigraTrueType for most VIGRA iterators.

#include <vigra/iteratortraits.hxx> Namespace: vigra

The documentation for this struct was generated from the following file:

- vigra/iteratortraits.hxx

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany | html generated using doxygen and Python vigra 1.12.4