X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fstructure%2FSGReferenced.hxx;h=67e4fb1ed18ba36b7d42d206dfd9155047d0a0ee;hb=b2c3a90adfb6c0285d02355fd8ab061b7f2f1e6c;hp=6bce1eb82bd83da9e4fce1d88e37c414340baf91;hpb=ff7e70f4d570c472bbc6fe4198483d927914a35e;p=simgear.git diff --git a/simgear/structure/SGReferenced.hxx b/simgear/structure/SGReferenced.hxx index 6bce1eb8..67e4fb1e 100644 --- a/simgear/structure/SGReferenced.hxx +++ b/simgear/structure/SGReferenced.hxx @@ -20,18 +20,15 @@ #ifndef SGReferenced_HXX #define SGReferenced_HXX -#define USE_OPENTHREADS_ATOMIC -#ifndef USE_OPENTHREADS_ATOMIC #include "SGAtomic.hxx" -#else -#include -#endif /// Base class for all reference counted SimGear objects /// Classes derived from this one are meant to be managed with /// the SGSharedPtr class. -/// For more info see @SGSharedPtr. +/// +/// For more info see SGSharedPtr. For using weak references see +/// SGWeakReferenced. class SGReferenced { public: @@ -45,20 +42,16 @@ public: { return *this; } static unsigned get(const SGReferenced* ref) - { if (ref) return ++(ref->_refcount); else return ~0u; } + { if (ref) return ++(ref->_refcount); else return 0; } static unsigned put(const SGReferenced* ref) - { if (ref) return --(ref->_refcount); else return ~0u; } + { if (ref) return --(ref->_refcount); else return 0; } static unsigned count(const SGReferenced* ref) - { if (ref) return ref->_refcount; else return ~0u; } + { if (ref) return ref->_refcount; else return 0; } static bool shared(const SGReferenced* ref) { if (ref) return 1u < ref->_refcount; else return false; } private: -#ifndef USE_OPENTHREADS_ATOMIC mutable SGAtomic _refcount; -#else - mutable OpenThreads::Atomic _refcount; -#endif }; #endif