12#ifndef ARCCORE_BASE_REFDECLARATIONS_H
13#define ARCCORE_BASE_REFDECLARATIONS_H
46 static ARCCORE_EXPORT
void addReference(T* t);
47 static ARCCORE_EXPORT
void removeReference(T* t);
83constexpr int REF_TAG_SHARED_PTR = 0;
84constexpr int REF_TAG_REFERENCE_COUNTER = 1;
98 return REF_TAG_SHARED_PTR;
108template <
typename InstanceType>
117template <
typename InstanceType,
int TagType>
134 static void addReference(T* t)
136 if constexpr (
requires { t->_internalAddReference(); })
137 t->_internalAddReference();
141 static void removeReference(T* t)
143 if constexpr (
requires { t->_internalRemoveReference(); }) {
144 bool need_destroy = t->_internalRemoveReference();
149 t->removeReference();
178#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS() \
181 template <typename T> friend class ::Arccore::ExternalReferenceCounterAccessor; \
182 template <typename T> friend class Arcane::ReferenceCounterAccessor; \
186 using ReferenceCounterTagType = ::Arcane::ReferenceCounterTag; \
187 virtual ::Arcane::ReferenceCounterImpl* _internalReferenceCounter() = 0; \
188 virtual void _internalAddReference() = 0; \
189 [[nodiscard]] virtual bool _internalRemoveReference() = 0
213#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name) \
217 struct RefTraits<class_name> \
219 static constexpr int TagId = ::Arcane::REF_TAG_REFERENCE_COUNTER; \
221 constexpr inline int arcaneImplGetRefTagId(class_name*) \
223 return ::Arcane::REF_TAG_REFERENCE_COUNTER; \
226 class ReferenceCounterAccessor<class_name> \
227 : public ExternalReferenceCounterAccessor<class_name> \
241using Arcane::ReferenceCounterTag;
Déclarations des types de la composante 'base' de Arccore.
Accesseur des méthodes de gestion de compteurs de référence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
constexpr int arcaneImplGetRefTagId(void *)
Fonction pour savoir quel type de compteur de référence utilise une classe.
Espace de nom de Arccore.
Caractéristiques pour gérer les compteurs de référence.
Structure servant à tagger les interfaces/classes qui utilisent un compteur de référence interne.