CompositeIterator< Item > Class Template Reference

Composite iterator. More...

#include <IteratorHelpers.hpp>

Inheritance diagram for CompositeIterator< Item >:
Inheritance graph

Public Member Functions

 CompositeIterator (std::vector< Iterator< Item > * > &iterators)
virtual ~CompositeIterator ()
void first ()
void next ()
bool isDone ()
Item & item ()
void setItem (Item &i)
virtual std::vector< Iterator< Item > * > getComposition ()
- Public Member Functions inherited from Iterator< Item >
Item * operator-> ()
Item & operator* ()
template<typename Functor >
void iterate (const Functor &f)
bool get (std::vector< Item > &current)
virtual void reset ()
virtual void finalize ()
- Public Member Functions inherited from SmartPointer
void use ()
void forget ()
- Public Member Functions inherited from ISmartPointer
virtual ~ISmartPointer ()

Additional Inherited Members

- Protected Member Functions inherited from SmartPointer
 SmartPointer ()
virtual ~SmartPointer ()

Detailed Description

template<class Item>
class gatb::core::tools::dp::impl::CompositeIterator< Item >

Composite iterator.

This iterator takes a list of iterators as input and iterates each one of these iterators.


// We include what we need for the test
#include <vector>
#include <iostream>
/* Iteration of a two iterators by pairs of items */
int main (int argc, char* argv[])
// We declare a STL list with some values.
float values1[] = {13,5,34};
std::list<float> l1 (values1, values1 + sizeof(values1)/sizeof(values1[0]) );
// We declare a STL list with some values.
float values2[] = {0.5, 3.1415, 2.71};
std::list<float> l2 (values2, values2 + sizeof(values2)/sizeof(values2[0]) );
std::vector<Iterator<float>*> iterators;
iterators.push_back (new ListIterator<float>(l1));
iterators.push_back (new ListIterator<float>(l2));
// We declare a composite iterator for the two iterators.
CompositeIterator<float> it (iterators);
// We iterate the pairs of the two lists
for (it.first(); !it.isDone();
std::cout << it.item() << std::endl;

Constructor & Destructor Documentation

CompositeIterator ( std::vector< Iterator< Item > * > &  iterators)


[in]iterators: the iterators vector
virtual ~CompositeIterator ( )


Member Function Documentation

void first ( )

Method that initializes the iteration.

Implements Iterator< Item >.

virtual std::vector<Iterator<Item>*> getComposition ( )

Get a vector holding the composite structure of the iterator.

Reimplemented from Iterator< Item >.

bool isDone ( )

Method telling whether the iteration is finished or not.

true if iteration is finished, false otherwise.

Implements Iterator< Item >.

Item& item ( )

Method that returns the current iterated item. Note that the returned type is the template type.

the current item in the iteration.

Implements Iterator< Item >.

void next ( )

Method that goes to the next item in the iteration.

status of the iteration

Implements Iterator< Item >.

void setItem ( Item &  i)

IMPORTANT : the Item argument provided to 'setItem' must be the object to be modified by one of the delegate iterator AND NOT the current item of CompositeIterator. Therefore, we make point the delegate current item to this provided Item argument.

Reimplemented from Iterator< Item >.

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