Lunchbox  1.16.0
Multi-threaded C++ toolbox library for all application developers creating high-performance multi-threaded programs.
lunchbox::IndexIterator< S, C, T > Class Template Reference

Counter-based, as opposed to pointer-based, iterator for any container. More...

#include <indexIterator.h>

+ Inheritance diagram for lunchbox::IndexIterator< S, C, T >:
+ Collaboration diagram for lunchbox::IndexIterator< S, C, T >:

Public Member Functions

 IndexIterator (C *container, const size_t i)
 Construct an iterator for a given container and position. More...
 
 IndexIterator (const S &from)
 Copy-construct an iterator. More...
 
template<class U , class V , class W >
 IndexIterator (const IndexIterator< U, V, W > &from)
 Copy-construct an iterator. More...
 
S & operator= (const IndexIterator &rhs)
 Assign the container and position from another iterator. More...
 
template<class U , class W >
S & operator= (const IndexIterator< S, U, W > &rhs)
 Assign the container and position from another iterator. More...
 
S & operator++ ()
 Increment the iterator position. More...
 
S & operator-- ()
 Decrement the iterator position. More...
 
operator++ (int)
 Increment the iterator position. More...
 
operator-- (int)
 Decrement the iterator position. More...
 
operator+ (const size_t &n) const
 Increment the iterator position by a given amount. More...
 
S & operator+= (const size_t &n)
 Increment the iterator position by a given amount. More...
 
operator- (const size_t &n) const
 Decrement the iterator position by a given amount. More...
 
S & operator-= (const size_t &n)
 Decrement the iterator position by a given amount. More...
 
ssize_t operator- (const S &n) const
 Compute the distance between this and another iterator. More...
 
bool operator== (const S &rhs) const
 
bool operator!= (const S &rhs) const
 
bool operator< (const S &rhs) const
 
bool operator> (const S &rhs) const
 
bool operator<= (const S &rhs) const
 
bool operator>= (const S &rhs) const
 
size_t getPosition () const
 

Protected Attributes

C * container_
 
size_t i_
 

Friends

template<class , class , class >
class IndexIterator
 

Detailed Description

template<class S, class C, class T>
class lunchbox::IndexIterator< S, C, T >

Counter-based, as opposed to pointer-based, iterator for any container.

Uses curiously recurring template pattern to return proper type from assignment and other operators. Access methods are to be implemented by a subclass using container_ and i_. Furthermore subclasses need to implement the necessary constructors (see LFVectorIterator for example).

Parameters
SCRTP Subclass type
CThe container type
TThe element type

Definition at line 38 of file indexIterator.h.

Constructor & Destructor Documentation

template<class S, class C, class T>
lunchbox::IndexIterator< S, C, T >::IndexIterator ( C *  container,
const size_t  i 
)
inline

Construct an iterator for a given container and position.

Version
1.8

Definition at line 42 of file indexIterator.h.

template<class S, class C, class T>
lunchbox::IndexIterator< S, C, T >::IndexIterator ( const S &  from)
inlineexplicit

Copy-construct an iterator.

Version
1.8

Definition at line 49 of file indexIterator.h.

template<class S, class C, class T>
template<class U , class V , class W >
lunchbox::IndexIterator< S, C, T >::IndexIterator ( const IndexIterator< U, V, W > &  from)
inline

Copy-construct an iterator.

Version
1.8

Definition at line 57 of file indexIterator.h.

Member Function Documentation

template<class S, class C, class T>
size_t lunchbox::IndexIterator< S, C, T >::getPosition ( ) const
inline
Returns
the position of this iterator.
Version
1.8

Definition at line 162 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator!= ( const S &  rhs) const
inline
Returns
true if both iterators are not equal.
Version
1.8

Definition at line 126 of file indexIterator.h.

template<class S, class C, class T>
S lunchbox::IndexIterator< S, C, T >::operator+ ( const size_t &  n) const
inline

Increment the iterator position by a given amount.

Version
1.8

Definition at line 100 of file indexIterator.h.

template<class S, class C, class T>
S& lunchbox::IndexIterator< S, C, T >::operator++ ( void  )
inline

Increment the iterator position.

Version
1.8

Definition at line 82 of file indexIterator.h.

template<class S, class C, class T>
S lunchbox::IndexIterator< S, C, T >::operator++ ( int  )
inline

Increment the iterator position.

Version
1.8

Definition at line 96 of file indexIterator.h.

template<class S, class C, class T>
S& lunchbox::IndexIterator< S, C, T >::operator+= ( const size_t &  n)
inline

Increment the iterator position by a given amount.

Version
1.8

Definition at line 102 of file indexIterator.h.

template<class S, class C, class T>
S lunchbox::IndexIterator< S, C, T >::operator- ( const size_t &  n) const
inline

Decrement the iterator position by a given amount.

Version
1.8

Definition at line 109 of file indexIterator.h.

template<class S, class C, class T>
ssize_t lunchbox::IndexIterator< S, C, T >::operator- ( const S &  n) const
inline

Compute the distance between this and another iterator.

Version
1.8

Definition at line 118 of file indexIterator.h.

template<class S, class C, class T>
S& lunchbox::IndexIterator< S, C, T >::operator-- ( void  )
inline

Decrement the iterator position.

Version
1.8

Definition at line 89 of file indexIterator.h.

template<class S, class C, class T>
S lunchbox::IndexIterator< S, C, T >::operator-- ( int  )
inline

Decrement the iterator position.

Version
1.8

Definition at line 98 of file indexIterator.h.

template<class S, class C, class T>
S& lunchbox::IndexIterator< S, C, T >::operator-= ( const size_t &  n)
inline

Decrement the iterator position by a given amount.

Version
1.8

Definition at line 111 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator< ( const S &  rhs) const
inline
Returns
true if this iterator is before the given one.
Version
1.8

Definition at line 132 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator<= ( const S &  rhs) const
inline
Returns
true if this iterator is before or equal to the given one.
Version
1.8

Definition at line 147 of file indexIterator.h.

template<class S, class C, class T>
S& lunchbox::IndexIterator< S, C, T >::operator= ( const IndexIterator< S, C, T > &  rhs)
inline

Assign the container and position from another iterator.

Version
1.8

Definition at line 65 of file indexIterator.h.

template<class S, class C, class T>
template<class U , class W >
S& lunchbox::IndexIterator< S, C, T >::operator= ( const IndexIterator< S, U, W > &  rhs)
inline

Assign the container and position from another iterator.

Version
1.8

Definition at line 74 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator== ( const S &  rhs) const
inline
Returns
true if both iterators are equal.
Version
1.8

Definition at line 120 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator> ( const S &  rhs) const
inline
Returns
true if this iterator is after the given one.
Version
1.8

Definition at line 138 of file indexIterator.h.

template<class S, class C, class T>
bool lunchbox::IndexIterator< S, C, T >::operator>= ( const S &  rhs) const
inline
Returns
true if this iterator is after or equal to the given one.
Version
1.8

Definition at line 156 of file indexIterator.h.


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