NGSolve  5.3
autoptr.hpp
1 #ifndef FILE_NGS_AUTOPTR
2 #define FILE_NGS_AUTOPTR
3 
4 /**************************************************************************/
5 /* File: autoptr.hpp */
6 /* Author: STL, Joachim Schoeberl */
7 /* Date: 29. Dec. 02 */
8 /**************************************************************************/
9 
10 namespace ngstd
11 {
12 
17 template <typename T>
18 class AutoPtr
19 {
20 private:
22  T * ptr;
23  bool owner;
24 public:
26  typedef T* pT;
27 
29  explicit AutoPtr (T * p = 0, bool aowner = true) { ptr = p; owner = aowner;}
31  ~AutoPtr () { if (owner) delete ptr; }
32 
34  T & operator*() const { return *ptr; }
35 
37  T* operator->() const { return ptr; }
38 
40  T *& Ptr() { return ptr; }
41 
43  T * Ptr() const { return ptr; }
44 
46  void Reset(T * p = 0, bool aowner = true)
47  { if (p != ptr) { if (owner) delete ptr; ptr = p; }; owner = aowner; }
48 
50  operator bool () { return ptr != 0; }
51 
52 private:
54  AutoPtr (AutoPtr &) { ; }
56  AutoPtr & operator= (AutoPtr &) { return *this; }
57 };
58 
59 }
60 
61 #endif
ngstd::AutoPtr::Ptr
T * Ptr() const
reference to the pointer
Definition: autoptr.hpp:43
ngstd::AutoPtr::Reset
void Reset(T *p=0, bool aowner=true)
delete object, and reset pointer
Definition: autoptr.hpp:46
ngstd::AutoPtr
Pointer to object.
Definition: autoptr.hpp:18
ngstd
namespace for standard data types and algorithms.
Definition: ngstd.hpp:55
ngstd::AutoPtr::operator*
T & operator*() const
reference to object
Definition: autoptr.hpp:34
ngstd::AutoPtr::~AutoPtr
~AutoPtr()
delete object
Definition: autoptr.hpp:31
ngstd::AutoPtr::Ptr
T *& Ptr()
reference to the pointer
Definition: autoptr.hpp:40
ngstd::AutoPtr::operator->
T * operator->() const
reference to object
Definition: autoptr.hpp:37
ngstd::AutoPtr::AutoPtr
AutoPtr(T *p=0, bool aowner=true)
initialize AutoPtr
Definition: autoptr.hpp:29