28template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
29FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::FullArrayIterator()
30 : current_top_level_iter(0),
31 last_top_level_iter(0),
36template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
37FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::FullArrayIterator(
43 : current_top_level_iter(0),
44 last_top_level_iter(0),
51template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
52FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::FullArrayIterator(
const topleveliterT& top_level_iter,
53 const topleveliterT& last_top_level_iter,
54 const restiterT& rest_iter,
55 const restiterT& last_rest_iter)
56 : current_top_level_iter(top_level_iter),
57 last_top_level_iter(last_top_level_iter),
58 current_rest_iter(rest_iter),
59 last_rest_iter(last_rest_iter)
62template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
63FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::FullArrayIterator(
65 : current_top_level_iter(iter2.current_top_level_iter),
66 last_top_level_iter(iter2.last_top_level_iter),
67 current_rest_iter(iter2.current_rest_iter),
68 last_rest_iter(iter2.last_rest_iter)
71template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
74 const FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>& iter2)
const
76 return current_top_level_iter == iter2.current_top_level_iter && current_rest_iter == iter2.current_rest_iter;
90template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
92FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::operator!=(
95 return !(*
this == iter2);
98template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
99typename FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::reference
102 return *current_rest_iter;
105template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
106typename FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>::pointer
116template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
117FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr>&
120 assert(current_top_level_iter < last_top_level_iter);
122 if (current_rest_iter == last_rest_iter)
124 ++current_top_level_iter;
125 if (current_top_level_iter != (last_top_level_iter))
127 current_rest_iter = (*current_top_level_iter).begin_all();
128 last_rest_iter = (*current_top_level_iter).end_all();
132 current_rest_iter = restiterT(0);
133 last_rest_iter = restiterT(0);
139template <
class topleveliterT,
class restiterT,
class elemT,
class _Ref,
class _Ptr>
143 FullArrayIterator<topleveliterT, restiterT, elemT, _Ref, _Ptr> was = *
this;
Class FullArrayIterator implements (forward) iterators that go through all elements of an Array.
Definition FullArrayIterator.h:49
bool operator==(const FullArrayIterator &) const
comparison operator
Definition FullArrayIterator.inl:73
reference operator*() const
dereferencing operator
Definition FullArrayIterator.inl:100
pointer operator->() const
member-selection operator
Definition FullArrayIterator.inl:107
FullArrayIterator & operator++()
prefix increment
Definition FullArrayIterator.inl:118