107 void removeReference()
112 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
114 if (_destroyThisReference())
121 void _internalAddReference()
125 bool _internalRemoveReference()
130 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
132 return _destroyThisReference();
141 delete m_external_deleter;
142 m_external_deleter = v;
146 return m_external_deleter;
151 std::atomic<Int32> m_nb_ref = 0;
157 bool _destroyThisReference()
159 if (!m_external_deleter)
161 bool do_delete =
false;
162 if (!m_external_deleter->m_no_destroy) {
163 bool is_destroyed = m_external_deleter->_destroyHandle(
this, m_external_deleter->m_handle);
168 delete m_external_deleter;
169 m_external_deleter =
nullptr;