5 #include <nx/sdk/interface.h> 45 return m_refCountHolderDelegate ? m_refCountHolderDelegate->addRef() : ++m_refCount;
53 if (m_refCountHolderDelegate)
56 const int newRefCounter = --m_refCount;
57 if (newRefCounter == 0)
58 delete m_refCountable;
64 if (m_refCountHolderDelegate)
65 return m_refCountHolderDelegate->refCount();
70 mutable std::atomic<int> m_refCount{1};
71 const IRefCountable*
const m_refCountable =
nullptr;
72 const RefCountableHolder*
const m_refCountHolderDelegate =
nullptr;
78 template <
class RefCountableInterface>
88 using IRefCountable::queryInterface;
90 virtual int addRef()
const override {
return m_refCountableHolder.addRef(); }
91 virtual int releaseRef()
const override {
return m_refCountableHolder.
releaseRef(); }
93 int refCount()
const {
return m_refCountableHolder.refCount(); }
96 RefCountable(): m_refCountableHolder(static_cast<const RefCountableInterface*>(
this)) {}
111 (void) refCountable->
addRef();
RefCountableHolder(const RefCountableHolder *delegate)
Definition: ref_countable.h:41
RefCountableHolder(const IRefCountable *refCountable)
Definition: ref_countable.h:36
int releaseRef() const
Definition: ref_countable.h:51
virtual int releaseRef() const =0
virtual int addRef() const =0
Definition: ref_countable.h:21
Definition: i_ref_countable.h:43
Definition: ref_countable.h:79