The Pedigree Project 0.1
Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T > Class Template Reference

An iterator applicable for many data structures. More...

#include <Iterator.h>

+ Collaboration diagram for TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >:

Public Types

typedef TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T const > Const
 
typedef TreeIterator< originalT, Struct, FunctionNext, FunctionPrev, K, T > Reverse
 
typedef TreeIterator< originalT, Struct, FunctionNext, FunctionPrev, K, T const > ConstReverse
 

Public Member Functions

 TreeIterator ()
 
 TreeIterator (const TreeIterator &x)
 
template<typename K2 , typename T2 >
 TreeIterator (const TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K2, T2 > &x)
 
 TreeIterator (Struct *Node)
 
 ~TreeIterator ()
 
TreeIterator & operator= (const TreeIterator &x)
 
TreeIterator & operator++ ()
 
TreeIterator & operator-- ()
 
T operator* ()
 
T operator-> ()
 
 operator Const ()
 
Struct * __getNode ()
 
K key ()
 
T value ()
 
const T & value (const T &failed=T()) const
 

Protected Attributes

Struct * m_Node
 

Friends

template<typename _originalT , class _Struct , _Struct *(_Struct::*)() _FunctionPrev, _Struct *(_Struct::*)() _FunctionNext, typename _K , typename _T >
class TreeIterator
 
template<typename _originalT , class _Struct , _Struct *(_Struct::*)() _FunctionPrev, _Struct *(_Struct::*)() _FunctionNext, typename _K1 , typename _T1 , typename _K2 , typename _T2 >
bool operator== (const TreeIterator< _originalT, _Struct, _FunctionPrev, _FunctionNext, _K1, _T1 > &x1, const TreeIterator< _originalT, _Struct, _FunctionPrev, _FunctionNext, _K2, _T2 > &x2)
 

Detailed Description

template<typename originalT, class Struct, Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
class TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >

An iterator applicable for many data structures.

General iterator for structures that provide functions for the next and previous structure in the datastructure and a "value" member. This template provides a bidirectional, a constant bidirectional, a reverse bidirectional and a constant reverse bidirectional iterator. This specific Tree-style implementation provides access to a key and value stored in the Struct

Parameters
[in]originalTthe original element type of the iterator
[in]Structthe datastructure that provides functions for the next/previous datastructure and a "value" member
[in]previouspointer to the member function used to iterate forward
[in]nextpointer to the member function used to iterate backwards
[in]Tthe real element type of the iterator

Definition at line 147 of file Iterator.h.

Member Typedef Documentation

◆ Const

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
typedef TreeIterator<originalT, Struct, FunctionPrev, FunctionNext, K, T const> TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::Const

Type of the constant bidirectional iterator

Definition at line 164 of file Iterator.h.

◆ ConstReverse

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
typedef TreeIterator<originalT, Struct, FunctionNext, FunctionPrev, K, T const> TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::ConstReverse

Type of the constant reverse iterator

Definition at line 168 of file Iterator.h.

◆ Reverse

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
typedef TreeIterator<originalT, Struct, FunctionNext, FunctionPrev, K, T> TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::Reverse

Type of the reverse iterator

Definition at line 166 of file Iterator.h.

Constructor & Destructor Documentation

◆ TreeIterator() [1/4]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::TreeIterator ( )
inline

The default constructor constructs an invalid/unusable iterator

Definition at line 171 of file Iterator.h.

◆ TreeIterator() [2/4]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::TreeIterator ( const TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T > &  x)
inline

The copy-constructor

Parameters
[in]TreeIteratorthe reference object

Definition at line 174 of file Iterator.h.

◆ TreeIterator() [3/4]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
template<typename K2 , typename T2 >
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::TreeIterator ( const TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K2, T2 > &  x)
inline

The constructor

Parameters
[in]TreeIteratorthe reference object

Definition at line 178 of file Iterator.h.

◆ TreeIterator() [4/4]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::TreeIterator ( Struct *  Node)
inline

Constructor from a pointer to an instance of the data structure

Parameters
[in]Nodepointer to an instance of the data structure

Definition at line 182 of file Iterator.h.

◆ ~TreeIterator()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::~TreeIterator ( )
inline

The destructor does nothing

Definition at line 184 of file Iterator.h.

Member Function Documentation

◆ __getNode()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
Struct * TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::__getNode ( )
inline

◆ key()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
K TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::key ( )
inline

Definition at line 221 of file Iterator.h.

◆ operator Const()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator Const ( )
inline

Conversion Operator to a constant iterator

Definition at line 212 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ operator*()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
T TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator* ( )
inline

Dereference operator yields the element value

Definition at line 203 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ operator++()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator & TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator++ ( )
inline

Preincrement operator

Definition at line 193 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ operator--()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator & TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator-- ( )
inline

Predecrement operator

Definition at line 198 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ operator->()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
T TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator-> ( )
inline

Dereference operator yields the element value

Definition at line 207 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ operator=()

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
TreeIterator & TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::operator= ( const TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T > &  x)
inline

The assignment operator

Parameters
[in]TreeIteratorthe reference object

Definition at line 188 of file Iterator.h.

References TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node.

◆ value() [1/2]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
T TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::value ( )
inline

Definition at line 229 of file Iterator.h.

◆ value() [2/2]

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
const T & TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::value ( const T &  failed = T()) const
inline

Definition at line 237 of file Iterator.h.

Friends And Related Symbol Documentation

◆ operator==

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
template<typename _originalT , class _Struct , _Struct *(_Struct::*)() _FunctionPrev, _Struct *(_Struct::*)() _FunctionNext, typename _K1 , typename _T1 , typename _K2 , typename _T2 >
bool operator== ( const TreeIterator< _originalT, _Struct, _FunctionPrev, _FunctionNext, _K1, _T1 > &  x1,
const TreeIterator< _originalT, _Struct, _FunctionPrev, _FunctionNext, _K2, _T2 > &  x2 
)
friend

The assignment operator is extern

◆ TreeIterator

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
template<typename _originalT , class _Struct , _Struct *(_Struct::*)() _FunctionPrev, _Struct *(_Struct::*)() _FunctionNext, typename _K , typename _T >
friend class TreeIterator
friend

All iterators must be friend in order to allow casts between some iterator types

Definition at line 152 of file Iterator.h.

Member Data Documentation

◆ m_Node

template<typename originalT , class Struct , Struct *(Struct::*)() FunctionPrev = &Struct::previous, Struct *(Struct::*)() FunctionNext = &Struct::next, typename K = originalT, typename T = originalT>
Struct* TreeIterator< originalT, Struct, FunctionPrev, FunctionNext, K, T >::m_Node
protected

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