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 ) 
   35template<
typename Derived>
 
   39template<
typename Derived>
 
   41template<
typename Derived>
 
   47template<
typename Derived>
 
   57  mutable long _referenceCount;
 
   58  mutable boost::mutex _referenceCountMutex;
 
   62template<
typename Derived>
 
   64template<
typename Derived>
 
   65inline 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); }
 
 
 
 
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