19template <
class Type,
class Accessor = DefaultAccessor<Type> >
93 template <
class SourceType>
96 Type* castedPtr =
dynamic_cast<Type*
>(ptr);
100 if (castedPtr !=
NULL){
123template <
class Type,
class Accessor>
130template <
class Type,
class Accessor>
138template <
class Type,
class Accessor>
146template <
class Type,
class Accessor>
153template <
class Type,
class Accessor>
160template <
class Type,
class Accessor>
165 BaseClass::SetPtr(ptr);
169template <
class Type,
class Accessor>
172 Type* slavePtr = BaseClass::GetPtr();
173 BaseClass::SetPtr(
NULL);
179template <
class Type,
class Accessor>
182 SetPtr(sourcePtr.
PopPtr());
188template <
class Type,
class Accessor>
199template <
class Type,
class Accessor>
202 SetPtr(ptr.PopPtr());
208template <
class Type,
class Accessor>
213 BaseClass::SetPtr(ptr);
221template <
class Type,
class Accessor>
224 Type* ptr = BaseClass::GetPtr();
229 Accessor::Delete(ptr);
Pointer wrapper providing automatic deleting pointed object during destruction.
TDelPtr(const TDelPtr &ptr)
Copy constructor.
void Detach()
Remove referenced object.
void Reset()
Remove object pointed by internal pointer and set this pointer to NULL.
void TakeOver(TDelPtr &sourcePtr)
Take internal pointer over.
TDelPtr & operator=(Type *ptr)
Assign operator.
Type * PopPtr()
Reset internal pointer value without deleting instance and return previos value.
TPointerBase< Type > BaseClass
TDelPtr(Type *ptr=NULL)
Construct and init this pointer.
TDelPtr(TDelPtr &&ptr)
Move constructor.
bool SetCastedOrRemove(SourceType *ptr)
Set internal pointer using casted pointer of other type.
TDelPtr & operator=(const TDelPtr &ptr)
Assign operator.
void SetPtr(Type *ptr)
Set new value of internal pointer.
TDelPtr & operator=(TDelPtr &&ptr)
Move operator.
Implementation of pointer wrapper.
#define I_IF_DEBUG(instructions)