add AutoFree<>
This commit is contained in:
parent
73b9fc265c
commit
92662f6b94
@ -551,5 +551,57 @@ namespace hgl
|
|||||||
obj=nullptr;
|
obj=nullptr;
|
||||||
}
|
}
|
||||||
};//template<typename T> class AutoDeleteArray
|
};//template<typename T> class AutoDeleteArray
|
||||||
|
|
||||||
|
template<typename T> class AutoFree
|
||||||
|
{
|
||||||
|
T *obj;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
AutoFree()
|
||||||
|
{
|
||||||
|
obj=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoFree(T *o)
|
||||||
|
{
|
||||||
|
obj=o;
|
||||||
|
}
|
||||||
|
|
||||||
|
~AutoFree()
|
||||||
|
{
|
||||||
|
if(obj)
|
||||||
|
free(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator = (T *o)
|
||||||
|
{
|
||||||
|
if(obj)
|
||||||
|
free(obj);
|
||||||
|
|
||||||
|
obj=o;
|
||||||
|
}
|
||||||
|
|
||||||
|
T *data(){return obj;}
|
||||||
|
T *operator -> (){return obj;}
|
||||||
|
|
||||||
|
operator T *(){return obj;}
|
||||||
|
operator const T *()const{return obj;}
|
||||||
|
const bool operator !()const{return !obj;}
|
||||||
|
|
||||||
|
void Discard()
|
||||||
|
{
|
||||||
|
obj=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
T *Finish()
|
||||||
|
{
|
||||||
|
T *reuslt=obj;
|
||||||
|
|
||||||
|
obj=nullptr;
|
||||||
|
|
||||||
|
return reuslt;
|
||||||
|
}
|
||||||
|
};//class AutoFree
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
#endif//HGL_SMART_INCLUDE
|
#endif//HGL_SMART_INCLUDE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user