65#ifndef Foam_Circulator_H
66#define Foam_Circulator_H
107template<
class Container,
bool Const>
117 using size_type =
typename Container::size_type;
126 typename Container::const_iterator,
127 typename Container::iterator
134 typename Container::const_reference,
135 typename Container::reference
189 inline bool empty()
const;
245 inline bool operator==
252 inline bool operator!=
276template<
class Container>
297 const typename Container::iterator& begin,
298 const typename Container::iterator& end
323template<
class Container>
344 const typename Container::const_iterator& begin,
345 const typename Container::const_iterator& end
Template-invariant parts for circulators.
CirculatorBase()=default
Default construct.
direction
Direction type enumeration.
A pair of begin/end iterators used for implementing circular iteration.
void setFulcrumToIterator()
Set the fulcrum to the current position of the iterator.
bool circulate(const CirculatorBase::direction dir=CirculatorBase::NONE)
Circulate around the list in the given direction.
difference_type nRotations() const
The distance between the iterator and the fulcrum.
reference prev() const
Dereference the previous iterator.
reference operator*() const
Dereference the iterator. Same as curr().
std::conditional_t< Const, typename Container::const_reference, typename Container::reference > reference
The reference type (const/non-const).
void setIteratorToFulcrum()
Set the iterator to the current position of the fulcrum.
size_type size() const
Return the range of the iterator pair.
reference operator()() const
Dereference the iterator. Same as curr().
typename Container::size_type size_type
The type that can represent the size of Container.
bool empty() const
True if begin/end iterators are identical.
CirculatorIters< Container, Const > & operator--()
Prefix decrement the iterator.
bool equal(const CirculatorIters< Container, Const > &rhs)
Compare for equality.
reference curr() const
Dereference the current iterator.
CirculatorIters< Container, Const > & operator++()
Prefix increment the iterator.
reference next() const
Dereference the next iterator.
CirculatorIters()
Default construct.
void operator=(const CirculatorIters< Container, Const > &rhs)
Assignment operator for circulators operating on the same container type.
typename Container::difference_type difference_type
The type that represents difference between iterator objects.
void increment()
Move iterator forward.
std::conditional_t< Const, typename Container::const_iterator, typename Container::iterator > iterator
The container iterator type (const/non-const).
void decrement()
Move iterator backward.
Walks over a container as if it were circular. The container must have the following members defined:
Circulator(const Circulator< Container > &rhs)=default
Copy construct.
Circulator(Container &obj)
Construct from begin/end of a container.
Circulator(const typename Container::iterator &begin, const typename Container::iterator &end)
Construct from two iterators.
Circulator()=default
Default construct.
Like Foam::Circulator, but with const-access iterators.
ConstCirculator(const typename Container::const_iterator &begin, const typename Container::const_iterator &end)
Construct from two iterators.
ConstCirculator()=default
Default construct.
ConstCirculator(const Container &obj)
Construct from begin/end of a container.
ConstCirculator(const ConstCirculator< Container > &rhs)=default
Copy construct.
void rhs(fvMatrix< typename Expr::value_type > &m, const Expr &expression)