ACF $AcfVersion:0$
THierarchicalBase.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
7
8
9namespace istd
10{
11
12
17template <class Base, class Interface = typename Base::InterfaceType>
19{
20public:
22
24
25 virtual void SetParentPtr(Interface* parentPtr);
26
27 // pseudo-reimplemented (istd::TIHierarchical<Interface>)
28 virtual int GetHierarchicalFlags() const override;
29 virtual int GetChildsCount() const override;
30 virtual Interface* GetChild(int index) const override;
31 virtual Interface* GetParent() const override;
32
33protected:
34 Interface* m_parentPtr;
35};
36
37
38// public methods
39
40template <class Base, class Interface>
45
46
47template <class Base, class Interface>
49{
50 m_parentPtr = parentPtr;
51
52 istd::IChangeable* changeablePtr = dynamic_cast<istd::IChangeable*>(parentPtr);
53 if (changeablePtr){
54 BaseClass::SetSlavePtr(changeablePtr);
55 }
56}
57
58
59// pseudo-reimplemented (istd::TIHierarchical<Interface>)
60
61template <class Base, class Interface>
63{
64 return BaseClass::HF_CHILDS_SUPPORTED | BaseClass::HF_PARENT_SUPPORTED;
65}
66
67
68template <class Base, class Interface>
73
74
75template <class Base, class Interface>
76Interface* THierarchicalBase<Base, Interface>::GetChild(int /*index*/) const
77{
78 return NULL;
79}
80
81
82template <class Base, class Interface>
84{
85 return m_parentPtr;
86}
87
88
89} // namespace istd
90
91
92
93
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
Binder of some istd::IChangeable implementation and changing delegator.
Template based implementation of a hierarchical object.
virtual Interface * GetChild(int index) const override
virtual void SetParentPtr(Interface *parentPtr)
virtual Interface * GetParent() const override
virtual int GetChildsCount() const override
istd::TChangeDelegator< Base > BaseClass
virtual int GetHierarchicalFlags() const override
#define NULL
Definition istd.h:74
Standard library.
Definition IComponent.h:17