|
0
|
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
|