28 #ifndef BERSERK_REFCNT_HPP
29 #define BERSERK_REFCNT_HPP
56 assert(mRefs.load() == 0);
66 return mRefs.load(std::memory_order_relaxed);
71 return mRefs.fetch_add(1);
76 auto refs = mRefs.fetch_sub(1);
96 mutable std::atomic_int32_t mRefs{0};
107 static inline T *AddRef(T *
object) {
121 static inline T *SafeAddRef(T *
object) {
134 static inline void Unref(T *
object) {
#define BRK_NS_END
Definition: Config.hpp:48
Reference counted base object.
Definition: RefCnt.hpp:52
virtual ~RefCnt()
Definition: RefCnt.hpp:54
std::int32_t RelRef() const
Definition: RefCnt.hpp:74
std::int32_t GetRefs() const
Definition: RefCnt.hpp:65
bool IsUnique() const
Definition: RefCnt.hpp:61
std::int32_t AddRef() const
Definition: RefCnt.hpp:69
virtual void Destroy() const
Definition: RefCnt.hpp:88
Definition: GLDevice.cpp:46