diff --git a/inc/hgl/type/Smart.h b/inc/hgl/type/Smart.h index 503d040..e0d0ac9 100644 --- a/inc/hgl/type/Smart.h +++ b/inc/hgl/type/Smart.h @@ -551,5 +551,57 @@ namespace hgl obj=nullptr; } };//template class AutoDeleteArray + + template 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 #endif//HGL_SMART_INCLUDE