Référence à une instance. Plus de détails...
Classes | |
class | BasicDeleter |
class | Deleter |
Types publics | |
typedef Ref< InstanceType, ImplTagId > | ThatClass |
typedef RefTraitsTagId< InstanceType, ImplTagId >::ImplType | ImplType |
Fonctions membres publiques | |
template<typename T , typename = _IsRefConstructible<typename Ref<T>::ImplType>> | |
Ref (const Ref< T > &rhs) noexcept | |
Construit une référence issue d'une autre référence sur un type compatible. | |
Ref (const ThatClass &rhs)=default | |
ThatClass & | operator= (const ThatClass &rhs)=default |
operator bool () const | |
InstanceType * | get () const |
Instance associée ou nullptr si aucune. | |
bool | isNull () const |
Indique si le compteur référence une instance non nulle. | |
InstanceType * | operator-> () const |
void | reset () |
Positionne l'instance au pointeur nul. | |
template<typename T = ThatClass, typename std::enable_if_t< T::RefType==REF_TAG_SHARED_PTR, bool > = true> | |
InstanceType * | _release () |
Libère le pointeur du compteur de référence sans le détruire. Cela n'est autorisé que si l'implémentation utiliser 'std::shared_ptr'. | |
const ImplType & | _internalInstance () const |
Fonctions membres publiques statiques | |
static ThatClass | create (InstanceType *t) |
Créé une référence à partir de l'instance t. | |
template<typename PointerType , typename... Args> | |
static Ref< InstanceType > | createRef (Args &&... args) |
static ThatClass | createWithHandle (InstanceType *t, Internal::ExternalRef handle) |
Créé une référence à partir d'une instance ayant une référence externe. | |
static ThatClass | _createNoDestroy (InstanceType *t) |
Attributs publics statiques | |
static constexpr int | RefType = RefTraitsTagId<InstanceType, ImplTagId>::RefType |
Types privés | |
template<typename... _Args> | |
using | _IsRefConstructible = typename std::enable_if< std::is_constructible< ImplType, _Args... >::value >::type |
Fonctions membres privées | |
Ref (InstanceType *t) | |
Ref (InstanceType *t, Internal::ExternalRef handle) | |
Ref (InstanceType *t, bool no_destroy) | |
Ref (ImplType &&t) | |
Fonctions membres privées statiques | |
static Deleter | _createBasicDeleter (std::shared_ptr< InstanceType > *) |
static BasicDeleterBase | _createBasicDeleter (impl::ReferenceCounterWrapper< InstanceType > *) |
static Deleter * | _getDeleter (std::shared_ptr< InstanceType > &v) |
static DeleterBase * | _getDeleter (impl::ReferenceCounterWrapper< InstanceType > &v) |
Attributs privés | |
ImplType | m_instance |
Amis | |
bool | operator== (const ThatClass &a, const ThatClass &b) |
bool | operator!= (const ThatClass &a, const ThatClass &b) |
bool | operator< (const ThatClass &a, const ThatClass &b) |
bool | operator! (const ThatClass &a) |
Référence à une instance.
Cette classe utilise un compteur de référence pour gérer la durée de vie d'une instance C++. Elle fonctionne de manière similaire à std::shared_ptr.
Lorsque la dernière instance de cette classe est détruite, l'instance référencée est détruite. La manière de détruire l'instance associée est spécifié lors de la création de la première référence via l'appel à une des méthodes create() ou createWithHandle().
Il existe deux implémentation possibles pour compter les références. Par défaut, on utilise 'std::shared_ptr'. Il est aussi possible d'utiliser un compteur de référence interne à la classe ce qui permet d'être compatible avec la classe ReferenceCounter et aussi de pouvoir récupérer une référence à partir de l'instance elle même. Cette deuxième implémentation est accessible si le type InstanceType définit un type ReferenceCounterTagType valant ReferenceCounterTag.
Définition à la ligne 141 du fichier arccore/src/base/arccore/base/Ref.h.
|
private |
Définition à la ligne 152 du fichier arccore/src/base/arccore/base/Ref.h.
typedef RefTraitsTagId<InstanceType,ImplTagId>::ImplType Arccore::Ref< InstanceType, ImplTagId >::ImplType |
Définition à la ligne 147 du fichier arccore/src/base/arccore/base/Ref.h.
typedef Ref<InstanceType, ImplTagId> Arccore::Ref< InstanceType, ImplTagId >::ThatClass |
Définition à la ligne 146 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlineexplicitprivate |
Définition à la ligne 194 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlineprivate |
Définition à la ligne 197 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlineprivate |
Définition à la ligne 200 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlineprivate |
Définition à la ligne 206 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinenoexcept |
Construit une référence issue d'une autre référence sur un type compatible.
La conversion est autorisée si on peut construire une instance de 'ImplType' à partir de celle de celle de Ref<T>::ImplType.
Définition à la ligne 219 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestaticprivate |
Définition à la ligne 329 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestaticprivate |
Définition à la ligne 325 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestatic |
Définition à la ligne 261 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestaticprivate |
Définition à la ligne 337 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestaticprivate |
Définition à la ligne 333 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Définition à la ligne 317 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Libère le pointeur du compteur de référence sans le détruire. Cela n'est autorisé que si l'implémentation utiliser 'std::shared_ptr'.
Définition à la ligne 305 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestatic |
Créé une référence à partir de l'instance t.
Cette méthode est interne à Arccore.
L'instance t doit avoir été créée par l'opérateur 'operator new' et sera détruite par l'opérateur 'operator delete'
Définition à la ligne 238 du fichier arccore/src/base/arccore/base/Ref.h.
Référencé par Arccore::makeRef(), et Arccore::makeRefFromInstance().
|
inlinestatic |
Définition à la ligne 245 du fichier arccore/src/base/arccore/base/Ref.h.
|
inlinestatic |
Créé une référence à partir d'une instance ayant une référence externe.
Définition à la ligne 256 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Instance associée ou nullptr
si aucune.
Définition à la ligne 293 du fichier arccore/src/base/arccore/base/Ref.h.
Référencé par Arcane::ServiceLoader::loadSingletonService().
|
inline |
Indique si le compteur référence une instance non nulle.
Définition à la ligne 295 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Définition à la ligne 288 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Définition à la ligne 296 du fichier arccore/src/base/arccore/base/Ref.h.
|
inline |
Positionne l'instance au pointeur nul.
Définition à la ligne 298 du fichier arccore/src/base/arccore/base/Ref.h.
|
friend |
Définition à la ligne 283 du fichier arccore/src/base/arccore/base/Ref.h.
|
friend |
Définition à la ligne 273 du fichier arccore/src/base/arccore/base/Ref.h.
|
friend |
Définition à la ligne 278 du fichier arccore/src/base/arccore/base/Ref.h.
|
friend |
Définition à la ligne 268 du fichier arccore/src/base/arccore/base/Ref.h.
|
private |
Définition à la ligne 321 du fichier arccore/src/base/arccore/base/Ref.h.
|
staticconstexpr |
Définition à la ligne 190 du fichier arccore/src/base/arccore/base/Ref.h.