31 template<
class Container,
bool Const>
42 && fulcrum_ == rhs.fulcrum_
47 template<
class Container,
bool Const>
58 template<
class Container,
bool Const>
72 template<
class Container,
bool Const>
82 template<
class Container,
bool Const>
85 const iterator&
begin,
96 template<
class Container,
bool Const>
105 fulcrum_(rhs.fulcrum_)
111 template<
class Container,
bool Const>
114 return (end_ == begin_);
118 template<
class Container,
bool Const>
122 return (end_ - begin_);
126 template<
class Container,
bool Const>
130 return (iter_ - fulcrum_);
134 template<
class Container,
bool Const>
140 if (dir == CirculatorBase::CLOCKWISE)
144 else if (dir == CirculatorBase::ANTICLOCKWISE)
149 return !(iter_ == fulcrum_);
153 template<
class Container,
bool Const>
160 template<
class Container,
bool Const>
167 template<
class Container,
bool Const>
175 template<
class Container,
bool Const>
179 if (iter_ == end_ - 1)
188 template<
class Container,
bool Const>
203 template<
class Container,
bool Const>
217 fulcrum_ = rhs.fulcrum_;
221 template<
class Container,
bool Const>
230 template<
class Container,
bool Const>
240 template<
class Container,
bool Const>
249 template<
class Container,
bool Const>
259 template<
class Container,
bool Const>
265 return this->
equal(rhs);
269 template<
class Container,
bool Const>
275 return !this->
equal(rhs);
279 template<
class Container,
bool Const>
287 template<
class Container,
bool Const>
295 template<
class Container,
bool Const>
302 return (iter_ - rhs.iter_);
reference prev() const
Dereference the previous iterator.
CirculatorIters< Container, Const > & operator--()
Prefix decrement the iterator.
typename Container::difference_type difference_type
The type that represents difference between iterator objects.
direction
Direction type enumeration.
CirculatorIters()
Default construct.
void setFulcrumToIterator()
Set the fulcrum to the current position of the iterator.
void setIteratorToFulcrum()
Set the iterator to the current position of the fulcrum.
void decrement()
Move iterator backward.
difference_type nRotations() const
The distance between the iterator and the fulcrum.
reference curr() const
Dereference the current iterator.
bool equal(const CirculatorIters< Container, Const > &rhs)
Compare for equality.
reference operator()() const
Dereference the iterator. Same as curr()
A pair of begin/end iterators used for implementing circular iteration.
reference operator*() const
Dereference the iterator. Same as curr()
CirculatorIters< Container, Const > & operator++()
Prefix increment the iterator.
void increment()
Move iterator forward.
size_type size() const
Return the range of the iterator pair.
constexpr auto end(C &c) -> decltype(c.end())
Return iterator to the end of the container c.
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.
typename std::conditional< Const, typename Container::const_reference, typename Container::reference >::type reference
The reference type (const/non-const)
bool circulate(const CirculatorBase::direction dir=CirculatorBase::NONE)
Circulate around the list in the given direction.
constexpr auto begin(C &c) -> decltype(c.begin())
Return iterator to the beginning of the container c.
reference next() const
Dereference the next iterator.