104 ARCCORE_DEPRECATED_REASON(
"Y2025: use _internalAddReference() instead")
110 ARCCORE_DEPRECATED_REASON(
"Y2025: use _internalRemoveReference() instead")
111 void removeReference()
116 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
118 if (_destroyThisReference())
125 void _internalAddReference()
129 bool _internalRemoveReference()
134 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
136 return _destroyThisReference();
145 delete m_external_deleter;
146 m_external_deleter = v;
150 return m_external_deleter;
155 std::atomic<Int32> m_nb_ref = 0;
161 bool _destroyThisReference()
163 if (!m_external_deleter)
165 bool do_delete =
false;
166 if (!m_external_deleter->m_no_destroy) {
167 bool is_destroyed = m_external_deleter->_destroyHandle(
this, m_external_deleter->m_handle);
172 delete m_external_deleter;
173 m_external_deleter =
nullptr;