Public Types | Public Member Functions | Protected Attributes | List of all members
Circulator< ContainerType > Class Template Reference

Walks over a container as if it were circular. The container must have the following members defined: More...

Inheritance diagram for Circulator< ContainerType >:
Inheritance graph
[legend]
Collaboration diagram for Circulator< ContainerType >:
Collaboration graph
[legend]

Public Types

typedef ContainerType::value_type value_type
 
typedef ContainerType::size_type size_type
 
typedef ContainerType::difference_type difference_type
 
typedef ContainerType::iterator iterator
 
typedef ContainerType::reference reference
 
- Public Types inherited from CirculatorBase
enum  direction { NONE, CLOCKWISE, ANTICLOCKWISE }
 

Public Member Functions

 Circulator ()
 
 Circulator (ContainerType &container)
 
 Circulator (const iterator &begin, const iterator &end)
 
 Circulator (const Circulator< ContainerType > &)
 
 ~Circulator ()
 
size_type size () const
 
bool circulate (const CirculatorBase::direction dir=NONE)
 
void setFulcrumToIterator ()
 
void setIteratorToFulcrum ()
 
difference_type nRotations () const
 
reference next () const
 
reference prev () const
 
void operator= (const Circulator< ContainerType > &)
 
Circulator< ContainerType > & operator++ ()
 
Circulator< ContainerType > operator++ (int)
 
Circulator< ContainerType > & operator-- ()
 
Circulator< ContainerType > operator-- (int)
 
bool operator== (const Circulator< ContainerType > &c) const
 
bool operator!= (const Circulator< ContainerType > &c) const
 
reference operator* () const
 
reference operator() () const
 
difference_type operator- (const Circulator< ContainerType > &c) const
 
- Public Member Functions inherited from CirculatorBase
 CirculatorBase ()
 

Protected Attributes

ContainerType::iterator begin_
 
ContainerType::iterator end_
 
ContainerType::iterator iter_
 
ContainerType::iterator fulcrum_
 

Detailed Description

template<class ContainerType>
class Foam::Circulator< ContainerType >

Walks over a container as if it were circular. The container must have the following members defined:

Examples

face f(identity(5));
// Construct Circulator from the face
Circulator<face> circ(f);
// First check that the Circulator has a size to iterate over.
// Then circulate around the list starting and finishing at the fulcrum.
if (circ.size()) do
{
circ() += 1;
Info<< "Iterate forwards over face : " << circ() << endl;
} while (circ.circulate(CirculatorBase::CLOCKWISE));
Source files

Definition at line 73 of file Circulator.H.

Member Typedef Documentation

◆ value_type

typedef ContainerType::value_type value_type

Definition at line 102 of file Circulator.H.

◆ size_type

typedef ContainerType::size_type size_type

Definition at line 105 of file Circulator.H.

◆ difference_type

typedef ContainerType::difference_type difference_type

Definition at line 109 of file Circulator.H.

◆ iterator

typedef ContainerType::iterator iterator

Definition at line 112 of file Circulator.H.

◆ reference

typedef ContainerType::reference reference

Definition at line 116 of file Circulator.H.

Constructor & Destructor Documentation

◆ Circulator() [1/4]

Circulator
inline

Definition at line 25 of file CirculatorI.H.

◆ Circulator() [2/4]

Circulator ( ContainerType &  container)
inlineexplicit

Definition at line 36 of file CirculatorI.H.

◆ Circulator() [3/4]

Circulator ( const iterator begin,
const iterator end 
)
inline

Definition at line 48 of file CirculatorI.H.

◆ Circulator() [4/4]

Circulator ( const Circulator< ContainerType > &  rhs)
inline

Definition at line 63 of file CirculatorI.H.

◆ ~Circulator()

Definition at line 78 of file CirculatorI.H.

Member Function Documentation

◆ size()

Foam::Circulator< ContainerType >::size_type size
inline

Definition at line 86 of file CirculatorI.H.

◆ circulate()

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

Definition at line 94 of file CirculatorI.H.

References CirculatorBase::ANTICLOCKWISE, and CirculatorBase::CLOCKWISE.

◆ setFulcrumToIterator()

void setFulcrumToIterator
inline

Definition at line 112 of file CirculatorI.H.

◆ setIteratorToFulcrum()

void setIteratorToFulcrum
inline

Definition at line 119 of file CirculatorI.H.

◆ nRotations()

Foam::Circulator< ContainerType >::difference_type nRotations
inline

Definition at line 127 of file CirculatorI.H.

◆ next()

Foam::Circulator< ContainerType >::reference next
inline

Definition at line 135 of file CirculatorI.H.

◆ prev()

Foam::Circulator< ContainerType >::reference prev
inline

Definition at line 148 of file CirculatorI.H.

◆ operator=()

void operator= ( const Circulator< ContainerType > &  rhs)
inline

◆ operator++() [1/2]

Foam::Circulator< ContainerType > & operator++
inline

Definition at line 181 of file CirculatorI.H.

◆ operator++() [2/2]

Foam::Circulator< ContainerType > operator++ ( int  )
inline

Definition at line 195 of file CirculatorI.H.

◆ operator--() [1/2]

Foam::Circulator< ContainerType > & operator--
inline

Definition at line 205 of file CirculatorI.H.

◆ operator--() [2/2]

Foam::Circulator< ContainerType > operator-- ( int  )
inline

Definition at line 219 of file CirculatorI.H.

◆ operator==()

bool operator== ( const Circulator< ContainerType > &  c) const
inline

Definition at line 229 of file CirculatorI.H.

References Foam::constant::universal::c.

◆ operator!=()

bool operator!= ( const Circulator< ContainerType > &  c) const
inline

Definition at line 245 of file CirculatorI.H.

References Foam::constant::universal::c.

◆ operator*()

Foam::Circulator< ContainerType >::reference operator*
inline

Definition at line 255 of file CirculatorI.H.

◆ operator()()

Foam::Circulator< ContainerType >::reference operator()
inline

Definition at line 263 of file CirculatorI.H.

References Foam::operator*().

Here is the call graph for this function:

◆ operator-()

Foam::Circulator< ContainerType >::difference_type operator- ( const Circulator< ContainerType > &  c) const
inline

Definition at line 272 of file CirculatorI.H.

References Foam::constant::universal::c.

Member Data Documentation

◆ begin_

ContainerType::iterator begin_
protected

Definition at line 83 of file Circulator.H.

Referenced by Circulator< ContainerType >::operator=().

◆ end_

ContainerType::iterator end_
protected

Definition at line 86 of file Circulator.H.

Referenced by Circulator< ContainerType >::operator=().

◆ iter_

ContainerType::iterator iter_
protected

Definition at line 89 of file Circulator.H.

Referenced by Circulator< ContainerType >::operator=().

◆ fulcrum_

ContainerType::iterator fulcrum_
protected

Definition at line 94 of file Circulator.H.

Referenced by Circulator< ContainerType >::operator=().


The documentation for this class was generated from the following files:
Foam::endl
Ostream & endl(Ostream &os)
Definition: Ostream.H:381
Foam::Info
messageStream Info
Foam::CirculatorBase::CLOCKWISE
@ CLOCKWISE
Definition: CirculatorBase.H:50
f
labelList f(nPoints)
Foam::identity
labelList identity(const label len, label start=0)
Definition: labelList.C:31