Arcane  4.2.1.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Ref< InstanceType >

Référence à une instance. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/base/arccore/base/Ref.h>

Graphe d'héritage de Arcane::Ref< InstanceType >:
Graphe de collaboration de Arcane::Ref< InstanceType >:

Fonctions membres publiques

template<typename T>
 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
Fonctions membres publiques hérités de Arcane::RefImpl< InstanceType, Ref< InstanceType >, RefTraits< InstanceType >::TagId >
 RefImpl (const Ref< T > &rhs) noexcept
 Construit une référence issue d'une autre référence sur un type compatible.
 RefImpl (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.
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)

Types privés

using Base = RefImpl<InstanceType, Ref<InstanceType>, RefTraits<InstanceType>::TagId>
using ImplType = Base::ImplType
using ThatClass = Ref<InstanceType>
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)

Fonctions membres privées statiques

static void _destroyInstance (InstanceType *t)

Attributs privés

friend Base

Membres hérités additionnels

Types publics hérités de Arcane::RefImpl< InstanceType, Ref< InstanceType >, RefTraits< InstanceType >::TagId >
using ThatClass
using ImplType
Attributs publics statiques hérités de Arcane::RefImpl< InstanceType, Ref< InstanceType >, RefTraits< InstanceType >::TagId >
static constexpr int RefType

Description détaillée

template<typename InstanceType>
class Arcane::Ref< InstanceType >

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 en spécialisant le type RefTraits pour qu'il définisse un un type ReferenceCounterTagType valant ReferenceCounterTag.

Définition à la ligne 324 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des définitions de type membres

◆ _IsRefConstructible

template<typename InstanceType>
template<typename... _Args>
using Arcane::Ref< InstanceType >::_IsRefConstructible = typename std::enable_if<std::is_constructible<ImplType, _Args...>::value>::type
private

Définition à la ligne 333 du fichier arccore/src/base/arccore/base/Ref.h.

◆ Base

template<typename InstanceType>
using Arcane::Ref< InstanceType >::Base = RefImpl<InstanceType, Ref<InstanceType>, RefTraits<InstanceType>::TagId>
private

Définition à la ligne 327 du fichier arccore/src/base/arccore/base/Ref.h.

◆ ImplType

template<typename InstanceType>
using Arcane::Ref< InstanceType >::ImplType = Base::ImplType
private

Définition à la ligne 328 du fichier arccore/src/base/arccore/base/Ref.h.

◆ ThatClass

template<typename InstanceType>
using Arcane::Ref< InstanceType >::ThatClass = Ref<InstanceType>
private

Définition à la ligne 329 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des constructeurs et destructeur

◆ Ref() [1/4]

template<typename InstanceType>
Arcane::Ref< InstanceType >::Ref ( InstanceType * t)
inlineexplicitprivate

Définition à la ligne 337 du fichier arccore/src/base/arccore/base/Ref.h.

◆ Ref() [2/4]

template<typename InstanceType>
Arcane::Ref< InstanceType >::Ref ( InstanceType * t,
Internal::ExternalRef< InstanceType > handle )
inlineprivate

Définition à la ligne 340 du fichier arccore/src/base/arccore/base/Ref.h.

◆ Ref() [3/4]

template<typename InstanceType>
Arcane::Ref< InstanceType >::Ref ( InstanceType * t,
bool no_destroy )
inlineprivate

Définition à la ligne 343 du fichier arccore/src/base/arccore/base/Ref.h.

◆ Ref() [4/4]

template<typename InstanceType>
template<typename T>
Arcane::Ref< InstanceType >::Ref ( const Ref< T > & rhs)
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 356 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des fonctions membres

◆ _createNoDestroy()

template<typename InstanceType>
ThatClass Arcane::Ref< InstanceType >::_createNoDestroy ( InstanceType * t)
inlinestatic

Définition à la ligne 398 du fichier arccore/src/base/arccore/base/Ref.h.

◆ _destroyInstance()

template<typename InstanceType>
void Arcane::Ref< InstanceType >::_destroyInstance ( InstanceType * t)
inlinestaticprivate

Définition à la ligne 405 du fichier arccore/src/base/arccore/base/Ref.h.

◆ create()

template<typename InstanceType>
ThatClass Arcane::Ref< InstanceType >::create ( InstanceType * t)
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 375 du fichier arccore/src/base/arccore/base/Ref.h.

Référencé par Arcane::makeRef(), et Arcane::makeRefFromInstance().

Voici le graphe des appelants de cette fonction :

◆ createRef()

template<typename InstanceType>
template<typename PointerType, typename... Args>
Ref< InstanceType > Arcane::Ref< InstanceType >::createRef ( Args &&... args)
inlinestatic

Définition à la ligne 382 du fichier arccore/src/base/arccore/base/Ref.h.

◆ createWithHandle()

template<typename InstanceType>
ThatClass Arcane::Ref< InstanceType >::createWithHandle ( InstanceType * t,
Internal::ExternalRef< InstanceType > handle )
inlinestatic

Créé une référence à partir d'une instance ayant une référence externe.

Définition à la ligne 393 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des données membres

◆ Base

template<typename InstanceType>
friend Arcane::Ref< InstanceType >::Base
private

Définition à la ligne 330 du fichier arccore/src/base/arccore/base/Ref.h.


La documentation de cette classe a été générée à partir des fichiers suivants :