NGSolve
5.3
|
00001 #ifndef FILE_NGS_AUTOPTR 00002 #define FILE_NGS_AUTOPTR 00003 00004 /**************************************************************************/ 00005 /* File: autoptr.hpp */ 00006 /* Author: STL, Joachim Schoeberl */ 00007 /* Date: 29. Dec. 02 */ 00008 /**************************************************************************/ 00009 00010 namespace ngstd 00011 { 00012 00017 template <typename T> 00018 class AutoPtr 00019 { 00020 private: 00022 T * ptr; 00023 bool owner; 00024 public: 00026 typedef T* pT; 00027 00029 explicit AutoPtr (T * p = 0, bool aowner = true) { ptr = p; owner = aowner;} 00031 ~AutoPtr () { if (owner) delete ptr; } 00032 00034 T & operator*() const { return *ptr; } 00035 00037 T* operator->() const { return ptr; } 00038 00040 T *& Ptr() { return ptr; } 00041 00043 T * Ptr() const { return ptr; } 00044 00046 void Reset(T * p = 0, bool aowner = true) 00047 { if (p != ptr) { if (owner) delete ptr; ptr = p; }; owner = aowner; } 00048 00050 operator bool () { return ptr != 0; } 00051 00052 private: 00054 AutoPtr (AutoPtr &) { ; } 00056 AutoPtr & operator= (AutoPtr &) { return *this; } 00057 }; 00058 00059 } 00060 00061 #endif