OpenTTD Source 20250707-master-gd44e693b25
|
Iterator that alternately takes from the "middle" of a range. More...
#include <alternating_iterator.hpp>
Public Types | |
using | value_type = typename Titer::value_type |
using | difference_type = std::ptrdiff_t |
using | iterator_category = std::forward_iterator_tag |
using | pointer = typename Titer::pointer |
using | reference = typename Titer::reference |
Public Member Functions | |
AlternatingIterator (Titer first, Titer last, Titer middle, bool begin) | |
Construct an AlternatingIterator. | |
bool | operator== (const AlternatingIterator &rhs) const |
std::strong_ordering | operator<=> (const AlternatingIterator &rhs) const |
reference | operator* () const |
AlternatingIterator & | operator++ () |
AlternatingIterator | operator++ (int) |
Titer | Base () const |
Private Member Functions | |
void | Next () |
Private Attributes | |
Titer | first |
Initial first iterator. | |
Titer | last |
Initial last iterator. | |
Titer | middle |
Initial middle iterator. | |
Titer | after |
Current iterator after the middle. | |
Titer | before |
Current iterator before the middle. | |
size_t | position |
Position within the entire range. | |
bool | next_state |
Next state for advancing iterator. If true take from after middle, otherwise take from before middle. | |
bool | state |
Current state for reading iterator. If true take from after middle, otherwise take from before middle. | |
Iterator that alternately takes from the "middle" of a range.
Titer | Type of iterator. |
Definition at line 20 of file alternating_iterator.hpp.
using AlternatingIterator< Titer >::difference_type = std::ptrdiff_t |
Definition at line 23 of file alternating_iterator.hpp.
using AlternatingIterator< Titer >::iterator_category = std::forward_iterator_tag |
Definition at line 24 of file alternating_iterator.hpp.
using AlternatingIterator< Titer >::pointer = typename Titer::pointer |
Definition at line 25 of file alternating_iterator.hpp.
using AlternatingIterator< Titer >::reference = typename Titer::reference |
Definition at line 26 of file alternating_iterator.hpp.
using AlternatingIterator< Titer >::value_type = typename Titer::value_type |
Definition at line 22 of file alternating_iterator.hpp.
|
inline |
Construct an AlternatingIterator.
first | Iterator to first element. |
last | Iterator to last element. |
middle | Iterator to "middle" element, from where to start. |
begin | Whether this iterator points to the first or last elements. |
Definition at line 37 of file alternating_iterator.hpp.
References AlternatingIterator< Titer >::after, AlternatingIterator< Titer >::before, AlternatingIterator< Titer >::first, AlternatingIterator< Titer >::last, AlternatingIterator< Titer >::middle, AlternatingIterator< Titer >::next_state, AlternatingIterator< Titer >::position, and AlternatingIterator< Titer >::state.
|
inline |
Definition at line 88 of file alternating_iterator.hpp.
|
inlineprivate |
Definition at line 106 of file alternating_iterator.hpp.
|
inline |
Definition at line 65 of file alternating_iterator.hpp.
|
inline |
Definition at line 70 of file alternating_iterator.hpp.
|
inline |
Definition at line 81 of file alternating_iterator.hpp.
|
inline |
Definition at line 57 of file alternating_iterator.hpp.
|
inline |
Definition at line 49 of file alternating_iterator.hpp.
|
private |
Current iterator after the middle.
Definition at line 98 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Current iterator before the middle.
Definition at line 99 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Initial first iterator.
Definition at line 94 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Initial last iterator.
Definition at line 95 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Initial middle iterator.
Definition at line 96 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Next state for advancing iterator. If true take from after middle, otherwise take from before middle.
Definition at line 103 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Position within the entire range.
Definition at line 101 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().
|
private |
Current state for reading iterator. If true take from after middle, otherwise take from before middle.
Definition at line 104 of file alternating_iterator.hpp.
Referenced by AlternatingIterator< Titer >::AlternatingIterator().