Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
DelegatedIterator.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
5
6namespace Stroika::Foundation::Traversal {
7
8 /*
9 ********************************************************************************
10 *********************** DelegatedIterator<T, EXTRA_DATA>::Rep ******************
11 ********************************************************************************
12 */
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)
17 {
18 }
19 template <typename T, typename EXTRA_DATA>
20 auto DelegatedIterator<T, EXTRA_DATA>::Rep::Clone () const -> unique_ptr<IRep>
21 {
22 return make_unique<Rep> (*this);
23 }
24 template <typename T, typename EXTRA_DATA>
25 void DelegatedIterator<T, EXTRA_DATA>::Rep::More (optional<T>* result, bool advance)
26 {
27 fDelegateTo.GetRep ().More (result, advance);
28 }
29 template <typename T, typename EXTRA_DATA>
30 bool DelegatedIterator<T, EXTRA_DATA>::Rep::Equals (const IRep* rhs) const
31 {
32 return fDelegateTo.ConstGetRep ().Equals (rhs);
33 }
34 template <typename T>
35 inline DelegatedIterator<T, void>::Rep::Rep (const Iterator<T>& delegateTo)
36 : fDelegateTo (delegateTo)
37 {
38 }
39
40 /*
41 ********************************************************************************
42 *********************** DelegatedIterator<T, EXTRA_DATA> ***********************
43 ********************************************************************************
44 */
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)}
48 {
49 }
50
51}