19template <
class Type,
bool DelArray = false>
62 void SetPtr(Type* ptr,
bool releaseFlag =
false);
92 template <
class SourceType>
95 Type* castedPtr =
dynamic_cast<Type*
>(ptr);
97 SetPtr(castedPtr, releaseFlag);
99 if (castedPtr !=
NULL){
102 else if (releaseFlag && (ptr !=
nullptr)){
117 bool m_releaseFlag =
false;
123template <
class Type,
bool DelArray>
125:
BaseClass(ptr), m_releaseFlag(releaseFlag)
130template <
class Type,
bool DelArray>
134 if (!ptr.m_releaseFlag){
144template <
class Type,
bool DelArray>
151template <
class Type,
bool DelArray>
158template <
class Type,
bool DelArray>
161 return m_releaseFlag;
165template <
class Type,
bool DelArray>
170 BaseClass::SetPtr(ptr);
172 m_releaseFlag = releaseFlag;
176template <
class Type,
bool DelArray>
179 Type* slavePtr = BaseClass::GetPtr();
180 BaseClass::SetPtr(
NULL);
186template <
class Type,
bool DelArray>
195template <
class Type,
bool DelArray>
208template <
class Type,
bool DelArray>
213 BaseClass::SetPtr(ptr);
221template <
class Type,
bool DelArray>
225 Type* ptr = BaseClass::GetPtr();
Pointer wrapper providing activatable deleting pointed object during destruction.
bool IsToRelase() const
Get state of release flag.
void Reset()
Remove object pointed by internal pointer and set this pointer to NULL.
TOptDelPtr(const TOptDelPtr &ptr)
Copy constructor.
void TakeOver(TOptDelPtr &sourcePtr)
Take internal pointer over.
TOptDelPtr & operator=(Type *ptr)
Assign operator.
TPointerBase< Type > BaseClass
TOptDelPtr & operator=(const TOptDelPtr &ptr)
Assign operator.
bool SetCastedOrRemove(SourceType *ptr, bool releaseFlag=false)
Set internal pointer using casted pointer of other type.
Type * PopPtr()
Reset internal pointer value without deleting instance and return previos value.
void Detach()
Remove referenced object.
void SetPtr(Type *ptr, bool releaseFlag=false)
Set new value of internal pointer.
TOptDelPtr(Type *ptr=NULL, bool releaseFlag=false)
Construct and init this pointer.
Implementation of pointer wrapper.
Type * GetPtr() const
Return access to internal stored pointer.
#define I_IF_DEBUG(instructions)