13 #ifndef ML_INTRUSIVE_PTR_BASE_H
14 #define ML_INTRUSIVE_PTR_BASE_H
22 #include <boost/thread/mutex.hpp>
26 #pragma warning( push )
27 #pragma warning( disable : 4396 )
35 template<
typename Derived>
39 template<
typename Derived>
41 template<
typename Derived>
47 template<
typename Derived>
57 mutable long _referenceCount;
58 mutable boost::mutex _referenceCountMutex;
62 template<
typename Derived>
64 template<
typename Derived>
65 inline void intrusive_ptr_release(
const IntrusivePtrBase<Derived>* ptr) { ptr->_referenceCountMutex.lock(); ptr->_referenceCount--; ptr->_referenceCountMutex.unlock();
if (ptr->_referenceCount==0)
delete static_cast<const Derived*
>(ptr); }
70 #pragma warning( pop )
A base-class enabling the use of boost::intrusive_ptr in derived classes.
void intrusive_ptr_add_ref(const IntrusivePtrBase< Derived > *ptr)
Provide overloads for reference counting functions used by boost::intrusive_ptr.
void intrusive_ptr_release(const IntrusivePtrBase< Derived > *ptr)
#define VESSELGRAPH_END_NAMESPACE
#define VESSELGRAPH_BEGIN_NAMESPACE