ANNA Suite  2020b
Multipurpose development suite for Telco applications
AutoPointer.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_core_AutoPointer_hpp
10 #define anna_core_AutoPointer_hpp
11 
13 
14 namespace anna {
15 
23 class AutoPointer {
24 public:
29  struct WhenFinished {
30  enum _v {
33  };
34  };
35 
39  virtual ~AutoPointer() {;}
40 
45  WhenFinished::_v getWhenFinished() const { return a_whenFinished; }
46 
51  void setWhenFinished(const WhenFinished::_v whenFinished) { a_whenFinished = whenFinished; }
52 
57  virtual String asString() const ;
58 
64  template <typename T> static T* release(T& instance)
65  {
66  return release(&instance);
67  }
68 
74  template <typename T> static T* release(T* instance)
75  {
76  if(instance == NULL)
77  return NULL;
78 
79  if(instance->getWhenFinished() == WhenFinished::Delete) {
80  delete instance;
81  instance = NULL;
82  }
83 
84  return instance;
85  }
86 
91  static const char* className() { return "AutoPointer"; }
92 
93 protected:
98  AutoPointer(const WhenFinished::_v whenFinished) : a_whenFinished(whenFinished) {;}
99 
100 private:
101  WhenFinished::_v a_whenFinished;
102 };
103 
104 }
105 
106 #endif
107 
108 
static const char * className()
Definition: AutoPointer.hpp:91
AutoPointer(const WhenFinished::_v whenFinished)
Definition: AutoPointer.hpp:98
Definition: AutoPointer.hpp:23
static T * release(T &instance)
Definition: AutoPointer.hpp:64
static T * release(T *instance)
Definition: AutoPointer.hpp:74
Definition: String.hpp:25
Definition: app.hpp:12
Definition: AutoPointer.hpp:29
void setWhenFinished(const WhenFinished::_v whenFinished)
Definition: AutoPointer.hpp:51
Definition: AutoPointer.hpp:31
Definition: AutoPointer.hpp:32
virtual String asString() const
WhenFinished::_v getWhenFinished() const
Definition: AutoPointer.hpp:45
virtual ~AutoPointer()
Definition: AutoPointer.hpp:39
_v
Definition: AutoPointer.hpp:30