/** \file G3D/ReferenceCount.h Reference Counting Garbage Collector for C++ \maintainer Morgan McGuire, http://graphics.cs.williams.edu \created 2001-10-23 \edited 2013-01-05 */ #ifndef G3D_ReferenceCount_h #define G3D_ReferenceCount_h #include "G3D/platform.h" #include "G3D/debug.h" #include "G3D/AtomicInt32.h" #define USE_SHARED_PTR #define ReferenceCountedPointer shared_ptr #define WeakReferenceCountedPointer weak_ptr namespace G3D { class ReferenceCountedObject : public enable_shared_from_this { public: virtual ~ReferenceCountedObject() {}; }; } // namespace namespace G3D { template bool isNull(const ReferenceCountedPointer& ptr) { return ! ptr; } template bool notNull(const ReferenceCountedPointer& ptr) { return (bool)ptr; } template bool isNull(const T* ptr) { return ptr == NULL; } template bool notNull(const T* ptr) { return ptr != NULL; } } // namespace #endif