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

details VectorAccessor Class Template Reference VIGRA

Accessor for items that are STL compatible vectors. More...

#include "vigra/accessor.hxx"

Inheritance diagram for VectorAccessor:

SequenceAccessor< VECTOR > StandardAccessor< VECTOR >

Public Types

typedef VECTOR::value_type component_type

Public Methods

template<class ITERATOR> component_type const & getComponent (ITERATOR const &i, int idx) const
template<class V, class ITERATOR> void setComponent (V const &value, ITERATOR const &i, int idx) const
template<class ITERATOR, class DIFFERENCE> component_type const & getComponent (ITERATOR const &i, DIFFERENCE const &diff, int idx) const
template<class V, class ITERATOR, class DIFFERENCE> void setComponent (V const &value, ITERATOR const &i, DIFFERENCE const &diff, int idx) const


Detailed Description


template<class VECTOR>
class vigra::VectorAccessor< VECTOR >

Accessor for items that are STL compatible vectors.

It encapsulates access to a vector's access functionality.

Usage:

#include "vigra/accessor.hxx"
Namespace: vigra

The accessor has two modes of operation:

  1. Access the vector's iterator via the begin() and end() functions:

        typedef std::list<std::vector<int> > ListOfVectors;
    
        ListOfVectors ll;
        ...
    
        typedef vigra::SequenceAccessor<ListOfVectors::value_type> ListOfVectorsAccessor;
        ListOfVectorsAccessor a;
        for(ListOfVectors::iterator li = ll.begin(); li != ll.end(); ++li)
        {
            for(ListOfVectorsAccessor::iterator i = a.begin(li); i != a.end(li); ++i)
            {
                *i = 10;
            }
        }
    
  2. Access the vector's components via an index (internally calls the vector's operator[] ):
        typedef std::list<std::vector<int> > ListOfVectors;
    
        ListOfVectors ll;
        ...
    
        typedef vigra::SequenceAccessor<ListOfVectors::value_type> ListOfVectorsAccessor;
        ListOfVectorsAccessor a;
        for(ListOfVectors::iterator li = ll.begin(); li != ll.end(); ++li)
        {
            for(int i = 0; i != a.size(li); ++i)
            {
                a.setComponent(10, li, i);
            }
        }
    
Required Interface:

    VECTOR v;
    VECTOR::iterator i;
    value_type d;
    int index;

    d = v[index];
    v[index] = d;
    i = v.begin();
    i = v.end();
    v.size();


Member Typedef Documentation


typedef VECTOR::value_type component_type

 

the vector's value_type

Reimplemented from SequenceAccessor< VECTOR >.

Reimplemented in RGBAccessor.


Member Function Documentation


component_type const& getComponent ITERATOR const &    i,
DIFFERENCE const &    diff,
int    idx
const [inline]

 

Read the component data at given vector index at an offset of given iterator position


component_type const& getComponent ITERATOR const &    i,
int    idx
const [inline]

 

Read the component data at given vector index at given iterator position


void setComponent V const &    value,
ITERATOR const &    i,
DIFFERENCE const &    diff,
int    idx
const [inline]

 

Set the component data at given vector index at an offset of given iterator position. The type V of the passed in value is automatically converted to component_type. In case of a conversion floating point -> intergral this includes rounding and clipping.


void setComponent V const &    value,
ITERATOR const &    i,
int    idx
const [inline]

 

Set the component data at given vector index at given iterator position. The type V of the passed in value is automatically converted to component_type. In case of a conversion floating point -> intergral this includes rounding and clipping.


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

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany

html generated using doxygen and Python
VIGRA 1.3.2 (27 Jan 2005)