lib/misc/autodelete.h
changeset 0 6f7a81934006
equal deleted inserted replaced
-1:000000000000 0:6f7a81934006
       
     1 #ifndef VMAILMGR__AUTO_DELETE__H__
       
     2 #define VMAILMGR__AUTO_DELETE__H__
       
     3 
       
     4 #include <sys/types.h>
       
     5 
       
     6 template<class T>
       
     7 class autodelete 
       
     8 {
       
     9 private:
       
    10   T* ptr;
       
    11 public:
       
    12   autodelete() : ptr(0) { }
       
    13   autodelete(T* p) : ptr(p) { }
       
    14   ~autodelete() { if(ptr) delete ptr; }
       
    15   operator T*&() { return ptr; }
       
    16   operator const T*() const { return ptr; }
       
    17   const T* operator=(T* p) { return ptr = p; }
       
    18   T* operator->() { return ptr; }
       
    19   const T* operator->() const { return ptr; }
       
    20   T& operator[](size_t i) { return ptr[i]; }
       
    21   const T& operator[](size_t i) const { return ptr[i]; }
       
    22   bool operator!() const { return !ptr; }
       
    23   operator bool() const { return ptr; }
       
    24 };
       
    25 
       
    26 #endif