|
OpenTTD Source 20251116-master-g21329071df
|
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().