NGSolve  4.9
ngstd/autoptr.hpp
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 public:
00025   typedef T* pT;
00026 
00028   explicit AutoPtr (T * p = 0)  { ptr = p; }
00030   ~AutoPtr () { delete ptr; }
00031   
00033   T & operator*() const { return *ptr; }
00034 
00036   T* operator->() const { return ptr; }
00037 
00039   T *& Ptr() { return ptr; }
00040 
00042   T * Ptr() const { return ptr; }
00043 
00045   void Reset(T * p = 0) { if (p != ptr) { delete ptr; ptr = p; } }
00046 
00048   operator bool () { return ptr != 0; }
00049 
00050 private:
00052   AutoPtr (AutoPtr &) { ; }
00054   AutoPtr & operator= (AutoPtr &) { return *this; }
00055 };
00056 
00057 }
00058 
00059 #endif