Choreonoid  1.1
Referenced.h
[詳解]
1 
5 #ifndef CNOID_UTIL_REFERENCED_H_INCLUDED
6 #define CNOID_UTIL_REFERENCED_H_INCLUDED
7 
8 #include <boost/intrusive_ptr.hpp>
9 
10 namespace cnoid {
11  class Referenced;
12 }
13 
14 namespace cnoid {
17 }
18 
19 namespace cnoid {
20 
21  class Referenced
22  {
23  public:
24  inline Referenced() { refCounter_ = 0; }
25  virtual ~Referenced() { }
26 
27  protected:
28  inline int refCounter() { return refCounter_; }
29 
30  private:
31  friend void intrusive_ptr_add_ref(Referenced* obj);
32  friend void intrusive_ptr_release(Referenced* obj);
33 
34  int refCounter_;
35  };
36 
37  typedef boost::intrusive_ptr<Referenced> ReferencedPtr;
38 }
39 
40 namespace cnoid
41 {
43  obj->refCounter_++;
44  }
45 
47  obj->refCounter_--;
48  if(obj->refCounter_ == 0){
49  delete obj;
50  }
51  }
52 };
53 
54 #endif
friend void intrusive_ptr_add_ref(Referenced *obj)
Definition: Referenced.h:42
void intrusive_ptr_release(cnoid::Referenced *obj)
Definition: Referenced.h:46
Referenced()
Definition: Referenced.h:24
Definition: Referenced.h:21
boost::intrusive_ptr< Referenced > ReferencedPtr
Definition: Referenced.h:37
void intrusive_ptr_add_ref(cnoid::Referenced *obj)
Definition: Referenced.h:42
friend void intrusive_ptr_release(Referenced *obj)
Definition: Referenced.h:46
int refCounter()
Definition: Referenced.h:28
virtual ~Referenced()
Definition: Referenced.h:25