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