Arcane  v4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arccore::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 Arccore::Ref< InstanceType >:
+ Graphe de collaboration de Arccore::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
 
ThatClassoperator= (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
 
ThatClassoperator= (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
 
 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
 
ThatClassoperator= (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
 
static constexpr int RefType
 

Description détaillée

template<typename InstanceType>
class Arccore::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 318 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 327 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 321 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 322 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 323 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 331 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 334 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 337 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 350 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des fonctions membres

◆ _createNoDestroy()

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

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

◆ _destroyInstance()

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

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

◆ create()

template<typename InstanceType>
static 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 369 du fichier arccore/src/base/arccore/base/Ref.h.

◆ createRef()

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

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

◆ createWithHandle()

template<typename InstanceType>
static 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 387 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 324 du fichier arccore/src/base/arccore/base/Ref.h.


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