|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Random-access iterator over the logical window. More...
#include <tpl_ring_buffer.H>
Public Types | |
| using | iterator_category = std::random_access_iterator_tag |
| Category. | |
| using | value_type = T |
| Element type. | |
| using | difference_type = std::ptrdiff_t |
| Signed distance type. | |
| using | reference = std::conditional_t< IsConst, const T &, T & > |
| Ref. | |
| using | pointer = std::conditional_t< IsConst, const T *, T * > |
| Ptr. | |
Public Member Functions | |
| basic_iterator ()=default | |
| Construct a singular iterator. | |
| basic_iterator (BufPtr rb, const size_t idx) noexcept | |
| Construct from a buffer and a logical index (internal use). | |
| template<bool B> requires (IsConst and not B) | |
| basic_iterator (const basic_iterator< B > &it) noexcept | |
| Convert a mutable iterator into a const iterator. | |
| BufPtr | buffer () const noexcept |
| Buffer this iterator walks (internal use). | |
| size_t | index () const noexcept |
| Current logical index (internal use). | |
| reference | operator* () const noexcept |
| Dereference to the current element. | |
| pointer | operator-> () const noexcept |
| Member access on the current element. | |
| reference | operator[] (const difference_type i) const noexcept |
Element i logical positions away. | |
| basic_iterator & | operator++ () noexcept |
| Pre-increment. | |
| basic_iterator | operator++ (int) noexcept |
| Post-increment. | |
| basic_iterator & | operator-- () noexcept |
| Pre-decrement. | |
| basic_iterator | operator-- (int) noexcept |
| Post-decrement. | |
| basic_iterator & | operator+= (const difference_type i) noexcept |
Advance by i logical positions. | |
| basic_iterator & | operator-= (const difference_type i) noexcept |
Retreat by i logical positions. | |
| basic_iterator | operator+ (difference_type i) const noexcept |
Iterator i positions forward. | |
| basic_iterator | operator- (difference_type i) const noexcept |
Iterator i positions backward. | |
| difference_type | operator- (const basic_iterator &it) const noexcept |
| Signed distance between iterators. | |
| bool | operator== (const basic_iterator &it) const noexcept |
| Equality: same buffer and logical position. | |
| bool | operator!= (const basic_iterator &it) const noexcept |
| Inequality: different buffer or logical position. | |
| bool | operator< (const basic_iterator &it) const noexcept |
| Strict ordering by logical position. | |
| bool | operator<= (const basic_iterator &it) const noexcept |
| Ordering by logical position. | |
| bool | operator> (const basic_iterator &it) const noexcept |
| Strict ordering by logical position. | |
| bool | operator>= (const basic_iterator &it) const noexcept |
| Ordering by logical position. | |
Private Types | |
| using | BufPtr = std::conditional_t< IsConst, const RingBuffer *, RingBuffer * > |
Static Private Member Functions | |
| static size_t | negative_magnitude (const std::ptrdiff_t i) noexcept |
Return abs(i) for negative signed offsets without signed overflow. | |
| static size_t | add_offset (const size_t idx, const std::ptrdiff_t i) noexcept |
Add signed offset i to logical index idx. | |
| static size_t | sub_offset (const size_t idx, const std::ptrdiff_t i) noexcept |
Subtract signed offset i from logical index idx. | |
Private Attributes | |
| BufPtr | rb_ = nullptr |
| size_t | idx_ = 0 |
Random-access iterator over the logical window.
Iterates from the oldest to the newest element. Invalidated by any insertion or extraction.
| IsConst | Whether the iterator provides const access. |
Definition at line 163 of file tpl_ring_buffer.H.
|
private |
Definition at line 165 of file tpl_ring_buffer.H.
| using Aleph::RingBuffer< T >::basic_iterator< IsConst >::difference_type = std::ptrdiff_t |
Signed distance type.
Definition at line 191 of file tpl_ring_buffer.H.
| using Aleph::RingBuffer< T >::basic_iterator< IsConst >::iterator_category = std::random_access_iterator_tag |
Category.
Definition at line 189 of file tpl_ring_buffer.H.
| using Aleph::RingBuffer< T >::basic_iterator< IsConst >::pointer = std::conditional_t<IsConst, const T *, T *> |
Ptr.
Definition at line 193 of file tpl_ring_buffer.H.
| using Aleph::RingBuffer< T >::basic_iterator< IsConst >::reference = std::conditional_t<IsConst, const T &, T &> |
Ref.
Definition at line 192 of file tpl_ring_buffer.H.
| using Aleph::RingBuffer< T >::basic_iterator< IsConst >::value_type = T |
Element type.
Definition at line 190 of file tpl_ring_buffer.H.
|
default |
Construct a singular iterator.
|
inlinenoexcept |
Construct from a buffer and a logical index (internal use).
Definition at line 199 of file tpl_ring_buffer.H.
|
inlinenoexcept |
Convert a mutable iterator into a const iterator.
Definition at line 203 of file tpl_ring_buffer.H.
|
inlinestaticprivatenoexcept |
Add signed offset i to logical index idx.
Definition at line 177 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::negative_magnitude().
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator+=(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator[]().
|
inlinenoexcept |
Buffer this iterator walks (internal use).
Definition at line 207 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::rb_.
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator==().
|
inlinenoexcept |
Current logical index (internal use).
Definition at line 213 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator-(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator<(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator<=(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator==(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator>(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator>=().
|
inlinestaticprivatenoexcept |
Return abs(i) for negative signed offsets without signed overflow.
Definition at line 171 of file tpl_ring_buffer.H.
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::add_offset(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::sub_offset().
|
inlinenoexcept |
Inequality: different buffer or logical position.
Definition at line 307 of file tpl_ring_buffer.H.
References Aleph::blossom_maximum_cardinality_matching().
|
inlinenoexcept |
Dereference to the current element.
Definition at line 219 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::rb_.
|
inlinenoexcept |
Iterator i positions forward.
Definition at line 281 of file tpl_ring_buffer.H.
References Aleph::blossom_maximum_cardinality_matching().
|
inlinenoexcept |
Pre-increment.
Definition at line 237 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Post-increment.
Definition at line 244 of file tpl_ring_buffer.H.
References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Advance by i logical positions.
Definition at line 267 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::add_offset(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Signed distance between iterators.
Definition at line 295 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::index().
|
inlinenoexcept |
Iterator i positions backward.
Definition at line 288 of file tpl_ring_buffer.H.
References Aleph::blossom_maximum_cardinality_matching().
|
inlinenoexcept |
Pre-decrement.
Definition at line 252 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Post-decrement.
Definition at line 259 of file tpl_ring_buffer.H.
References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Retreat by i logical positions.
Definition at line 274 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::sub_offset().
|
inlinenoexcept |
Member access on the current element.
Definition at line 225 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_.
|
inlinenoexcept |
Strict ordering by logical position.
Definition at line 313 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::index().
|
inlinenoexcept |
Ordering by logical position.
Definition at line 319 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::index().
|
inlinenoexcept |
Equality: same buffer and logical position.
Definition at line 301 of file tpl_ring_buffer.H.
References Aleph::and, Aleph::RingBuffer< T >::basic_iterator< IsConst >::buffer(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, Aleph::RingBuffer< T >::basic_iterator< IsConst >::index(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::rb_.
|
inlinenoexcept |
Strict ordering by logical position.
Definition at line 325 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::index().
|
inlinenoexcept |
Ordering by logical position.
Definition at line 331 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::index().
|
inlinenoexcept |
Element i logical positions away.
Definition at line 231 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::add_offset(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::idx_, and Aleph::RingBuffer< T >::basic_iterator< IsConst >::rb_.
|
inlinestaticprivatenoexcept |
Subtract signed offset i from logical index idx.
Definition at line 183 of file tpl_ring_buffer.H.
References Aleph::RingBuffer< T >::basic_iterator< IsConst >::negative_magnitude().
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator-=().
|
private |
Definition at line 168 of file tpl_ring_buffer.H.
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::index(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator*(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator++(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator++(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator+=(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator-(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator--(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator--(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator-=(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator->(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator<(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator<=(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator==(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator>(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator>=(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator[]().
|
private |
Definition at line 167 of file tpl_ring_buffer.H.
Referenced by Aleph::RingBuffer< T >::basic_iterator< IsConst >::buffer(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator*(), Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator==(), and Aleph::RingBuffer< T >::basic_iterator< IsConst >::operator[]().