6namespace Stroika::Foundation::Traversal {
13 template <
typename T,
typename EXTRA_DATA>
14 DelegatedIterator<T, EXTRA_DATA>::Rep::Rep (
const Iterator<T>& delegateTo,
const EXTRA_DATA& extraData)
15 : fDelegateTo (delegateTo)
16 , fExtraData (extraData)
19 template <
typename T,
typename EXTRA_DATA>
20 auto DelegatedIterator<T, EXTRA_DATA>::Rep::Clone () const -> unique_ptr<IRep>
22 return make_unique<Rep> (*
this);
24 template <
typename T,
typename EXTRA_DATA>
25 void DelegatedIterator<T, EXTRA_DATA>::Rep::More (optional<T>* result,
bool advance)
27 fDelegateTo.GetRep ().More (result, advance);
29 template <
typename T,
typename EXTRA_DATA>
30 bool DelegatedIterator<T, EXTRA_DATA>::Rep::Equals (
const IRep* rhs)
const
32 return fDelegateTo.ConstGetRep ().Equals (rhs);
35 inline DelegatedIterator<T, void>::Rep::Rep (
const Iterator<T>& delegateTo)
36 : fDelegateTo (delegateTo)
45 template <
typename T,
typename EXTRA_DATA>
46 DelegatedIterator<T, EXTRA_DATA>::DelegatedIterator (
const Iterator<T>& delegateTo,
const EXTRA_DATA& extraData)
47 : Iterator<T>{make_unique<Rep> (delegateTo, extraData)}