Internal helper class: actual implementation of nested iterator. More...
#include <NestedIterator.h>
Classes | |
| struct | BeginPositionTag |
| struct | EndPositionTag |
Public Types | |
| using | OuterIterator_t = ITER |
| using | InnerContainerExtractor_t = INNERCONTEXTRACT |
| using | InnerContainer_t = typename InnerContainerExtractor_t::result_type |
| using | InnerIterator_t = typename InnerContainer_t::const_iterator |
| using | iterator_type = deep_const_fwd_iterator_nested< OuterIterator_t, InnerContainerExtractor_t > |
| using | value_type = typename InnerIterator_t::value_type |
| Type of the value pointed by the iterator. More... | |
Public Member Functions | |
| deep_const_fwd_iterator_nested ()=default | |
| Default constructor: invalid iterator. More... | |
| deep_const_fwd_iterator_nested (OuterIterator_t src, OuterIterator_t end) | |
| Constructor: starts from the container at the specified iterator. More... | |
| template<class CONT > | |
| deep_const_fwd_iterator_nested (const CONT &cont, BeginPositionTag) | |
| Constructor: starts from the beginning of the specified container. More... | |
| template<class CONT > | |
| deep_const_fwd_iterator_nested (const CONT &cont, EndPositionTag) | |
| Constructor: starts from the end of the specified container. More... | |
| iterator_type & | operator++ () |
| Prefix increment operator: points to the next element. More... | |
| iterator_type | operator++ (int) |
| Postfix increment operator: points to the next element. More... | |
| void | swap (iterator_type &with) |
| Swaps this with the specified iterator. More... | |
Dereference operators | |
| const value_type & | operator* () const |
| const value_type & | operator-> () const |
Comparison operators | |
Returns true if the two iterators are equivalent | |
| bool | operator== (const iterator_type &as) const |
| bool | operator!= (const iterator_type &as) const |
| Returns true if the two iterators are not equivalent. More... | |
| operator bool () const | |
| Bonus: convert to bool to find out if we are at the end. More... | |
| bool | operator! () const |
Static Public Attributes | |
| static constexpr BeginPositionTag | begin = {} |
| static constexpr EndPositionTag | end = {} |
Protected Member Functions | |
| deep_const_fwd_iterator_nested (OuterIterator_t end) | |
| Internal constructor: past-the-end iterator pointing to specified place. More... | |
Protected Attributes | |
| OuterIterator_t | outer_iter |
| points to current inner container More... | |
| OuterIterator_t | outer_end |
| points to past-the-end inner container More... | |
| InnerIterator_t | inner_iter |
| points to the current element More... | |
| InnerIterator_t | inner_end |
| stores the end of current inner container More... | |
Private Member Functions | |
| void | init_inner () |
| void | reset_inner () |
| void | skip_empty () |
| points to the next item More... | |
| bool | is_end () const |
| const InnerContainerExtractor_t::result_type & | extract_container (const typename OuterIterator_t::value_type &v) |
| Extracts the value out of the inner iterator. More... | |
Internal helper class: actual implementation of nested iterator.
Definition at line 59 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::InnerContainer_t = typename InnerContainerExtractor_t::result_type |
Definition at line 157 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::InnerContainerExtractor_t = INNERCONTEXTRACT |
Definition at line 156 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::InnerIterator_t = typename InnerContainer_t::const_iterator |
Definition at line 160 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::iterator_type = deep_const_fwd_iterator_nested <OuterIterator_t, InnerContainerExtractor_t> |
Definition at line 164 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::OuterIterator_t = ITER |
Definition at line 155 of file NestedIterator.h.
| using lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::value_type = typename InnerIterator_t::value_type |
Type of the value pointed by the iterator.
Definition at line 167 of file NestedIterator.h.
|
default |
Default constructor: invalid iterator.
This constructor sets the iterator in an invalid, end-of-container state.
| lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::deep_const_fwd_iterator_nested | ( | OuterIterator_t | src, |
| OuterIterator_t | end | ||
| ) |
Constructor: starts from the container at the specified iterator.
| src | the starting point of the iterator |
| end | the end point of the iterator |
This constructor does not set and end. Due to how the class works, if the outer container has an "end", reaching it with this iterator has a undefined behaviour. You most likely want to use the constructor where you can also specify the end of the container.
Definition at line 323 of file NestedIterator.h.
|
inline |
Constructor: starts from the beginning of the specified container.
| cont | the container |
| [anonymous] | tag to select the begin-of-container behaviour |
The second parameter is used just to choose which constructor to use. Two constants are provided, begin and end, defined in the iterator itself (no explicit namespace is required). Example:
Definition at line 212 of file NestedIterator.h.
|
inline |
Constructor: starts from the end of the specified container.
| cont | the container |
| [anonymous] | tag to select the end-of-container behaviour |
The second parameter is used just to choose which constructor to use. Two constants are provided, begin and end, defined in the iterator itself (no explicit namespace is required). Example:
Definition at line 233 of file NestedIterator.h.
|
inlineprotected |
Internal constructor: past-the-end iterator pointing to specified place.
Definition at line 298 of file NestedIterator.h.
|
inlineprivate |
Extracts the value out of the inner iterator.
Definition at line 310 of file NestedIterator.h.
|
private |
Definition at line 353 of file NestedIterator.h.
|
inlineprivate |
Definition at line 306 of file NestedIterator.h.
|
inline |
Bonus: convert to bool to find out if we are at the end.
Definition at line 283 of file NestedIterator.h.
|
inline |
Definition at line 284 of file NestedIterator.h.
|
inline |
Returns true if the two iterators are not equivalent.
Definition at line 270 of file NestedIterator.h.
|
inline |
Definition at line 257 of file NestedIterator.h.
| deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT > & lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::operator++ | ( | ) |
Prefix increment operator: points to the next element.
The behaviour of this method on a past-the-end iterator is undefined (currently, chances are it will access invalid memory).
Definition at line 334 of file NestedIterator.h.
|
inline |
Postfix increment operator: points to the next element.
The behaviour of this method on a past-the-end iterator is undefined (currently, chances are it will access invalid memory).
Definition at line 252 of file NestedIterator.h.
|
inline |
Definition at line 258 of file NestedIterator.h.
|
inline |
Definition at line 264 of file NestedIterator.h.
|
private |
Definition at line 360 of file NestedIterator.h.
|
private |
points to the next item
Definition at line 364 of file NestedIterator.h.
| void lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::swap | ( | iterator_type & | with | ) |
Swaps this with the specified iterator.
Definition at line 343 of file NestedIterator.h.
|
static |
Definition at line 173 of file NestedIterator.h.
|
static |
Definition at line 174 of file NestedIterator.h.
|
protected |
stores the end of current inner container
Definition at line 295 of file NestedIterator.h.
|
protected |
points to the current element
Definition at line 294 of file NestedIterator.h.
|
protected |
points to past-the-end inner container
Definition at line 292 of file NestedIterator.h.
|
protected |
points to current inner container
Definition at line 291 of file NestedIterator.h.
1.8.5