CirculatorIters< Container, Const > Class Template Reference

A pair of begin/end iterators used for implementing circular iteration. More...

Inheritance diagram for CirculatorIters< Container, Const >:
Collaboration diagram for CirculatorIters< Container, Const >:

Public Types

using size_type = typename Container::size_type
 The type that can represent the size of Container. More...
 
using difference_type = typename Container::difference_type
 The type that represents difference between iterator objects. More...
 
using iterator = typename std::conditional< Const, typename Container::const_iterator, typename Container::iterator >::type
 The container iterator type (const/non-const) More...
 
using reference = typename std::conditional< Const, typename Container::const_reference, typename Container::reference >::type
 The reference type (const/non-const) More...
 
- Public Types inherited from CirculatorBase
enum  direction { NONE, CLOCKWISE, ANTICLOCKWISE }
 Direction type enumeration. More...
 

Public Member Functions

 CirculatorIters ()
 Default construct. More...
 
 CirculatorIters (const iterator &begin, const iterator &end)
 Construct from begin/end iterators. More...
 
 CirculatorIters (const CirculatorIters< Container, Const > &rhs)
 Copy construct. More...
 
bool empty () const
 True if begin/end iterators are identical. More...
 
size_type size () const
 Return the range of the iterator pair. More...
 
difference_type nRotations () const
 The distance between the iterator and the fulcrum. More...
 
bool circulate (const CirculatorBase::direction dir=CirculatorBase::NONE)
 Circulate around the list in the given direction. More...
 
void setFulcrumToIterator ()
 Set the fulcrum to the current position of the iterator. More...
 
void setIteratorToFulcrum ()
 Set the iterator to the current position of the fulcrum. More...
 
reference curr () const
 Dereference the current iterator. More...
 
reference next () const
 Dereference the next iterator. More...
 
reference prev () const
 Dereference the previous iterator. More...
 
void operator= (const CirculatorIters< Container, Const > &rhs)
 Assignment operator for circulators operating on the same container type. More...
 
CirculatorIters< Container, Const > & operator++ ()
 Prefix increment the iterator. More...
 
CirculatorIters< Container, Const > operator++ (int)
 Postfix increment the iterator. More...
 
CirculatorIters< Container, Const > & operator-- ()
 Prefix decrement the iterator. More...
 
CirculatorIters< Container, Const > operator-- (int)
 Postfix decrement the iterator. More...
 
bool operator== (const CirculatorIters< Container, Const > &) const
 Check for equality of this iterator with another iterator that operate on the same container type. More...
 
bool operator!= (const CirculatorIters< Container, Const > &) const
 Check for inequality of this iterator with another iterator that operate on the same container type. More...
 
reference operator* () const
 Dereference the iterator. Same as curr() More...
 
reference operator() () const
 Dereference the iterator. Same as curr() More...
 
difference_type operator- (const CirculatorIters< Container, Const > &) const
 Return the difference between this iterator and another iterator that operate on the same container type. More...
 
- Public Member Functions inherited from CirculatorBase
 CirculatorBase ()=default
 Default construct. More...
 

Protected Member Functions

bool equal (const CirculatorIters< Container, Const > &rhs)
 Compare for equality. More...
 
void increment ()
 Move iterator forward. More...
 
void decrement ()
 Move iterator backward. More...
 

Detailed Description

template<class Container, bool Const>
class Foam::CirculatorIters< Container, Const >

A pair of begin/end iterators used for implementing circular iteration.

Definition at line 111 of file Circulator.H.

Member Typedef Documentation

◆ size_type

using size_type = typename Container::size_type

The type that can represent the size of Container.

Definition at line 122 of file Circulator.H.

◆ difference_type

using difference_type = typename Container::difference_type

The type that represents difference between iterator objects.

Definition at line 127 of file Circulator.H.

◆ iterator

using iterator = typename std::conditional < Const, typename Container::const_iterator, typename Container::iterator >::type

The container iterator type (const/non-const)

Definition at line 137 of file Circulator.H.

◆ reference

using reference = typename std::conditional < Const, typename Container::const_reference, typename Container::reference >::type

The reference type (const/non-const)

Definition at line 147 of file Circulator.H.

Constructor & Destructor Documentation

◆ CirculatorIters() [1/3]

CirculatorIters ( )
inline

Default construct.

Definition at line 66 of file CirculatorI.H.

◆ CirculatorIters() [2/3]

CirculatorIters ( const iterator begin,
const iterator end 
)
inline

Construct from begin/end iterators.

Definition at line 77 of file CirculatorI.H.

◆ CirculatorIters() [3/3]

CirculatorIters ( const CirculatorIters< Container, Const > &  rhs)

Copy construct.

Definition at line 91 of file CirculatorI.H.

Member Function Documentation

◆ equal()

bool equal ( const CirculatorIters< Container, Const > &  rhs)
inlineprotected

Compare for equality.

Definition at line 26 of file CirculatorI.H.

◆ increment()

void increment ( )
inlineprotected

Move iterator forward.

Definition at line 41 of file CirculatorI.H.

◆ decrement()

void decrement ( )
inlineprotected

Move iterator backward.

Definition at line 52 of file CirculatorI.H.

◆ empty()

bool empty ( ) const
inline

True if begin/end iterators are identical.

Definition at line 105 of file CirculatorI.H.

◆ size()

Foam::CirculatorIters< Container, Const >::size_type size ( ) const
inline

Return the range of the iterator pair.

Definition at line 113 of file CirculatorI.H.

◆ nRotations()

Foam::CirculatorIters< Container, Const >::difference_type nRotations ( ) const
inline

The distance between the iterator and the fulcrum.

This is equivalent to the number of rotations of the circulator

Definition at line 121 of file CirculatorI.H.

◆ circulate()

bool circulate ( const CirculatorBase::direction  dir = CirculatorBase::NONE)
inline

Circulate around the list in the given direction.

Returns
True if iterator has not yet reached the fulcrum

Definition at line 129 of file CirculatorI.H.

◆ setFulcrumToIterator()

void setFulcrumToIterator ( )
inline

Set the fulcrum to the current position of the iterator.

Definition at line 147 of file CirculatorI.H.

◆ setIteratorToFulcrum()

void setIteratorToFulcrum ( )
inline

Set the iterator to the current position of the fulcrum.

Definition at line 154 of file CirculatorI.H.

◆ curr()

Foam::CirculatorIters< Container, Const >::reference curr ( ) const
inline

Dereference the current iterator.

Definition at line 162 of file CirculatorI.H.

◆ next()

Foam::CirculatorIters< Container, Const >::reference next ( ) const
inline

Dereference the next iterator.

Definition at line 170 of file CirculatorI.H.

◆ prev()

Foam::CirculatorIters< Container, Const >::reference prev ( ) const
inline

Dereference the previous iterator.

Definition at line 183 of file CirculatorI.H.

◆ operator=()

void operator= ( const CirculatorIters< Container, Const > &  rhs)
inline

Assignment operator for circulators operating on the same container type.

Definition at line 198 of file CirculatorI.H.

◆ operator++() [1/2]

Foam::CirculatorIters< Container, Const > & operator++ ( )
inline

Prefix increment the iterator.

Wraps iterator to the begin if it reaches the end

Definition at line 216 of file CirculatorI.H.

◆ operator++() [2/2]

Foam::CirculatorIters< Container, Const > operator++ ( int  )
inline

Postfix increment the iterator.

Wraps iterator to the begin if it reaches the end

Definition at line 225 of file CirculatorI.H.

◆ operator--() [1/2]

Foam::CirculatorIters< Container, Const > & operator-- ( )
inline

Prefix decrement the iterator.

Wraps iterator to the end if it reaches the beginning

Definition at line 235 of file CirculatorI.H.

◆ operator--() [2/2]

Foam::CirculatorIters< Container, Const > operator-- ( int  )
inline

Postfix decrement the iterator.

Wraps iterator to the end if it reaches the beginning

Definition at line 244 of file CirculatorI.H.

◆ operator==()

bool operator== ( const CirculatorIters< Container, Const > &  rhs) const
inline

Check for equality of this iterator with another iterator that operate on the same container type.

Definition at line 254 of file CirculatorI.H.

◆ operator!=()

bool operator!= ( const CirculatorIters< Container, Const > &  rhs) const
inline

Check for inequality of this iterator with another iterator that operate on the same container type.

Definition at line 264 of file CirculatorI.H.

◆ operator*()

Foam::CirculatorIters< Container, Const >::reference operator* ( ) const
inline

Dereference the iterator. Same as curr()

Definition at line 274 of file CirculatorI.H.

◆ operator()()

Foam::CirculatorIters< Container, Const >::reference operator() ( ) const
inline

Dereference the iterator. Same as curr()

Definition at line 282 of file CirculatorI.H.

◆ operator-()

Foam::CirculatorIters< Container, Const >::difference_type operator- ( const CirculatorIters< Container, Const > &  rhs) const
inline

Return the difference between this iterator and another iterator that operate on the same container type.

Definition at line 291 of file CirculatorI.H.


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