26template <
class topleveliterT,
class GetRestRangeFunctionT>
27NestedIterator<topleveliterT, GetRestRangeFunctionT>::NestedIterator()
34# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
35# pragma GCC diagnostic push
36# pragma GCC diagnostic ignored "-Wuninitialized"
39template <
class topleveliterT,
class GetRestRangeFunctionT>
41NestedIterator<topleveliterT, GetRestRangeFunctionT>::_set_rest_iters_for_current_top_level_iter()
43 if (this->_current_top_level_iter != this->_end_top_level_iter)
45 this->_current_rest_iter = GetRestRangeFunctionT().begin(this->_current_top_level_iter);
46 this->_end_rest_iter = GetRestRangeFunctionT().end(this->_current_top_level_iter);
50# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
51# pragma GCC diagnostic pop
55template <
class topleveliterT,
class GetRestRangeFunctionT>
56NestedIterator<topleveliterT, GetRestRangeFunctionT>::NestedIterator(
const topleveliterT& top_level_iter,
57 const topleveliterT& end_top_level_iter)
58 : _current_top_level_iter(top_level_iter),
59 _end_top_level_iter(end_top_level_iter)
61 this->_set_rest_iters_for_current_top_level_iter();
64template <
class topleveliterT,
class GetRestRangeFunctionT>
67 const NestedIterator<topleveliterT, GetRestRangeFunctionT>& iter2)
const
69 return this->_current_top_level_iter == iter2._current_top_level_iter
70 && (this->_current_top_level_iter == this->_end_top_level_iter || this->_current_rest_iter == iter2._current_rest_iter);
88template <
class topleveliterT,
class GetRestRangeFunctionT>
91 const NestedIterator<topleveliterT, GetRestRangeFunctionT>& iter2)
const
93 return !(*
this == iter2);
96template <
class topleveliterT,
class GetRestRangeFunctionT>
102 ++this->_current_rest_iter;
103 if (this->_current_rest_iter == this->_end_rest_iter)
106 ++this->_current_top_level_iter;
107 this->_set_rest_iters_for_current_top_level_iter();
112template <
class topleveliterT,
class GetRestRangeFunctionT>
116 const NestedIterator<topleveliterT, GetRestRangeFunctionT> was = *
this;
121template <
class topleveliterT,
class GetRestRangeFunctionT>
122typename NestedIterator<topleveliterT, GetRestRangeFunctionT>::reference
125 return *this->_current_rest_iter;
128template <
class topleveliterT,
class GetRestRangeFunctionT>
129typename NestedIterator<topleveliterT, GetRestRangeFunctionT>::pointer
Class NestedIterator implements a (forward) iterator using a pair of 'nested' iterators.
Definition NestedIterator.h:94
NestedIterator & operator++()
prefix increment
Definition NestedIterator.inl:98
bool operator==(const NestedIterator &) const
test equality
Definition NestedIterator.inl:66
bool operator!=(const NestedIterator &) const
test equality
Definition NestedIterator.inl:90
reference operator*() const
dereferencing operator
Definition NestedIterator.inl:123
pointer operator->() const
member-selection operator
Definition NestedIterator.inl:130