9#include <icomp/CComponentBase.h>
16template <
class InterfaceType>
17class TCompPtr:
protected CInterfaceManipBase
20 typedef CInterfaceManipBase BaseClass;
24 explicit TCompPtr(icomp::IComponent* pointer);
34 const InterfaceType* GetPtr()
const;
39 InterfaceType* GetPtr();
46 template <
class CastedInterfaceType>
47 CastedInterfaceType Cast(
const QByteArray& subComponentId = QByteArray())
const
49 CastedInterfaceType* castedPtr = BaseClass::ExtractInterface<CastedInterfaceType>(m_ptr.data(), subComponentId);
54 InterfaceType& operator*()
const;
55 InterfaceType* operator->()
const;
56 bool operator==(
const TCompPtr& other)
const;
58 void SetPtr(icomp::IComponent* pointer);
61 QSharedPointer<icomp::IComponent> m_ptr;
62 InterfaceType* m_interfacePtr;
66template <
class InterfaceType>
67inline TCompPtr<InterfaceType>::TCompPtr()
68 :m_interfacePtr(nullptr)
73template <
class InterfaceType>
74inline TCompPtr<InterfaceType>::TCompPtr(icomp::IComponent* pointer)
83template<
class InterfaceType>
84inline bool TCompPtr<InterfaceType>::IsValid()
const
86 return m_impl.data() != NULL;
90template<
class InterfaceType>
91inline const InterfaceType* TCompPtr<InterfaceType>::GetPtr()
const
93 return m_interfacePtr;
97template<
class InterfaceType>
98inline InterfaceType* TCompPtr<InterfaceType>::GetPtr()
100 return m_interfacePtr;
104template<
class InterfaceType>
105inline void TCompPtr<InterfaceType>::Reset()
109 m_interfacePtr =
nullptr;
114template<
class InterfaceType>
115inline InterfaceType & TCompPtr<InterfaceType>::operator*()
const
117 Q_ASSERT(m_interfacePtr !=
nullptr);
119 return *m_interfacePtr;
123template<
class InterfaceType>
124inline InterfaceType * TCompPtr<InterfaceType>::operator->()
const
126 return m_interfacePtr;
130template <
class InterfaceType>
131inline bool TCompPtr<InterfaceType>::operator==(
const TCompPtr<InterfaceType>& other)
const
133 return m_ptr == other.m_ptr;
137template <
class InterfaceType>
138inline void TCompPtr<InterfaceType>::SetPtr(icomp::IComponent* pointer)
140 InterfaceType* castedPtr = BaseClass::ExtractInterface<InterfaceType>(pointer);
141 if (castedPtr !=
nullptr){
142 m_ptr.reset(pointer);
144 m_interfacePtr = castedPtr;