lib/misc/autodelete.h
author "Tomas Zeman <tzeman@volny.cz>"
Wed, 16 Jan 2008 22:39:43 +0100
changeset 0 6f7a81934006
permissions -rw-r--r--
Imported vmailmgr-0.96.9

#ifndef VMAILMGR__AUTO_DELETE__H__
#define VMAILMGR__AUTO_DELETE__H__

#include <sys/types.h>

template<class T>
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