diff -r 000000000000 -r 6f7a81934006 lib/misc/autodelete.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/misc/autodelete.h Wed Jan 16 22:39:43 2008 +0100 @@ -0,0 +1,26 @@ +#ifndef VMAILMGR__AUTO_DELETE__H__ +#define VMAILMGR__AUTO_DELETE__H__ + +#include + +template +class autodelete +{ +private: + T* ptr; +public: + autodelete() : ptr(0) { } + autodelete(T* p) : ptr(p) { } + ~autodelete() { if(ptr) delete ptr; } + operator T*&() { return ptr; } + operator const T*() const { return ptr; } + const T* operator=(T* p) { return ptr = p; } + T* operator->() { return ptr; } + const T* operator->() const { return ptr; } + T& operator[](size_t i) { return ptr[i]; } + const T& operator[](size_t i) const { return ptr[i]; } + bool operator!() const { return !ptr; } + operator bool() const { return ptr; } +}; + +#endif