2 #ifndef INTRUSIVE_PTR_HEADER 3 #define INTRUSIVE_PTR_HEADER 5 #include "oxygine-include.h" 16 typedef T element_type;
22 intrusive_ptr_add_ref(s._ptr);
29 if (_ptr != 0) intrusive_ptr_add_ref(_ptr);
39 OX_ASSERT(_ptr && _ptr->_ref_counter > 0);
45 OX_ASSERT(_ptr && _ptr->_ref_counter > 0);
64 intrusive_ptr_add_ref(p);
67 bool operator!()
const 86 intrusive_ptr_release(_ptr);
92 return a.get() == b.get();
95 template<
class T,
class U>
inline bool operator!=(intrusive_ptr<T>
const& a, intrusive_ptr<U>
const& b)
97 return a.get() != b.get();
100 template<
class T>
inline bool operator==(intrusive_ptr<T>
const& a, T* b)
105 template<
class T>
inline bool operator!=(intrusive_ptr<T>
const& a, T* b)
110 template<
class T>
inline bool operator==(T* a, intrusive_ptr<T>
const& b)
115 template<
class T>
inline bool operator!=(T* a, intrusive_ptr<T>
const& b)
120 template<
class T> T* get_pointer(intrusive_ptr<T>
const& p)
125 template<
class T,
class U> intrusive_ptr<T> static_pointer_cast(intrusive_ptr<U>
const& p)
127 return static_cast<T*
>(p.get());
130 template<
class T,
class U> intrusive_ptr<T> const_pointer_cast(intrusive_ptr<U>
const& p)
132 return const_cast<T*
>(p.get());
135 template<
class T,
class U> intrusive_ptr<T> dynamic_pointer_cast(intrusive_ptr<U>
const& p)
137 return dynamic_cast<T*
>(p.get());
145 RefHolder() {this->_ref_counter = 1000000;}
Definition: intrusive_ptr.h:12
–oxgl-end–!
Definition: Actor.h:14
Definition: intrusive_ptr.h:142