101 ARCCORE_DEPRECATED_REASON(
"Y2025: use _internalAddReference() instead")
107 ARCCORE_DEPRECATED_REASON(
"Y2025: use _internalRemoveReference() instead")
108 void removeReference()
113 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
115 if (_destroyThisReference())
122 void _internalAddReference()
126 bool _internalRemoveReference()
131 Int32 v = std::atomic_fetch_add(&m_nb_ref, -1);
133 return _destroyThisReference();
142 delete m_external_deleter;
143 m_external_deleter = v;
147 return m_external_deleter;
152 std::atomic<Int32> m_nb_ref = 0;
158 bool _destroyThisReference()
160 if (!m_external_deleter)
162 bool do_delete =
false;
163 if (!m_external_deleter->m_no_destroy) {
164 bool is_destroyed = m_external_deleter->_destroyHandle(
this, m_external_deleter->m_handle);
169 delete m_external_deleter;
170 m_external_deleter =
nullptr;