ACF $AcfVersion:0$
TComponentWrap.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
5// ACF includes
6#include <icomp/IComponent.h>
9
10
11namespace icomp
12{
13
14
18template <class Component>
19class TComponentWrap: public Component
20{
21public:
22 typedef Component BaseClass;
23
25 virtual ~TComponentWrap();
26
27 // pseudo-reimplemented (icomp::IComponent)
28 virtual void SetComponentContext(
29 const IComponentContextSharedPtr& contextPtr,
30 const IComponent* parentPtr,
31 bool isParentOwner) override;
32};
33
34
35// public methods
36
37template <class Component>
41
42
43template <class Component>
45{
46 ICompositeComponent* parentPtr = const_cast<ICompositeComponent*>(dynamic_cast<const ICompositeComponent*>(BaseClass::GetParentComponent(true)));
47 if (parentPtr != NULL){
48 parentPtr->OnSubcomponentDeleted(this);
49 }
50 else {
51 this->SetComponentContext(IComponentContextSharedPtr(), nullptr, false);
52 }
53}
54
55
56// pseudo-reimplemented (icomp::IComponent)
57
58template <class Component>
60 const IComponentContextSharedPtr& contextPtr,
61 const IComponent* parentPtr,
62 bool isParentOwner)
63{
64 if (BaseClass::GetComponentContext() != nullptr){
65 BaseClass::OnComponentDestroyed();
66
67 BaseClass::InitStaticInfo(this);
68 }
69
70 BaseClass::SetComponentContext(contextPtr, parentPtr, isParentOwner);
71
72 if (contextPtr != nullptr){
73 BaseClass::InitStaticInfo(this);
74
75 BaseClass::OnComponentCreated();
76 }
77}
78
79
80} // namespace icomp
81
82
Main component interface.
Definition IComponent.h:32
Composite component interface.
virtual void OnSubcomponentDeleted(const IComponent *subcomponentPtr)=0
Called if subcomponent is removed from memory.
Wrapper of end component implementation used to correct control of component life-cycle.
virtual void SetComponentContext(const IComponentContextSharedPtr &contextPtr, const IComponent *parentPtr, bool isParentOwner) override
#define NULL
Definition istd.h:74
Package with interfaces and class used for components concept.
std::shared_ptr< icomp::IComponentContext > IComponentContextSharedPtr