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

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

+ Graphe d'héritage de Arccore::Ref< InstanceType, ImplTagId >:
+ Graphe de collaboration de Arccore::Ref< InstanceType, ImplTagId >:

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
 
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.
 
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)
 

Description détaillée

template<typename InstanceType, int ImplTagId>
class Arccore::Ref< InstanceType, ImplTagId >

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.

Documentation des définitions de type membres

◆ _IsRefConstructible

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

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

◆ ImplType

template<typename InstanceType , int ImplTagId>
typedef RefTraitsTagId<InstanceType,ImplTagId>::ImplType Arccore::Ref< InstanceType, ImplTagId >::ImplType

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

◆ ThatClass

template<typename InstanceType , int ImplTagId>
typedef Ref<InstanceType, ImplTagId> Arccore::Ref< InstanceType, ImplTagId >::ThatClass

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

Documentation des constructeurs et destructeur

◆ Ref() [1/5]

template<typename InstanceType , int ImplTagId>
Arccore::Ref< InstanceType, ImplTagId >::Ref ( InstanceType *  t)
inlineexplicitprivate

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

◆ Ref() [2/5]

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

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

◆ Ref() [3/5]

template<typename InstanceType , int ImplTagId>
Arccore::Ref< InstanceType, ImplTagId >::Ref ( InstanceType *  t,
bool  no_destroy 
)
inlineprivate

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

◆ Ref() [4/5]

template<typename InstanceType , int ImplTagId>
Arccore::Ref< InstanceType, ImplTagId >::Ref ( ImplType &&  t)
inlineprivate

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

◆ Ref() [5/5]

template<typename InstanceType , int ImplTagId>
template<typename T , typename = _IsRefConstructible<typename Ref<T>::ImplType>>
Arccore::Ref< InstanceType, ImplTagId >::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 219 du fichier arccore/src/base/arccore/base/Ref.h.

Documentation des fonctions membres

◆ _createBasicDeleter() [1/2]

template<typename InstanceType , int ImplTagId>
static BasicDeleterBase Arccore::Ref< InstanceType, ImplTagId >::_createBasicDeleter ( impl::ReferenceCounterWrapper< InstanceType > *  )
inlinestaticprivate

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

◆ _createBasicDeleter() [2/2]

template<typename InstanceType , int ImplTagId>
static Deleter Arccore::Ref< InstanceType, ImplTagId >::_createBasicDeleter ( std::shared_ptr< InstanceType > *  )
inlinestaticprivate

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

◆ _createNoDestroy()

template<typename InstanceType , int ImplTagId>
static ThatClass Arccore::Ref< InstanceType, ImplTagId >::_createNoDestroy ( InstanceType *  t)
inlinestatic

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

◆ _getDeleter() [1/2]

template<typename InstanceType , int ImplTagId>
static DeleterBase * Arccore::Ref< InstanceType, ImplTagId >::_getDeleter ( impl::ReferenceCounterWrapper< InstanceType > &  v)
inlinestaticprivate

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

◆ _getDeleter() [2/2]

template<typename InstanceType , int ImplTagId>
static Deleter * Arccore::Ref< InstanceType, ImplTagId >::_getDeleter ( std::shared_ptr< InstanceType > &  v)
inlinestaticprivate

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

◆ _internalInstance()

template<typename InstanceType , int ImplTagId>
const ImplType & Arccore::Ref< InstanceType, ImplTagId >::_internalInstance ( ) const
inline

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

◆ _release()

template<typename InstanceType , int ImplTagId>
template<typename T = ThatClass, typename std::enable_if_t< T::RefType==REF_TAG_SHARED_PTR, bool > = true>
InstanceType * Arccore::Ref< InstanceType, ImplTagId >::_release ( )
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.

◆ create()

template<typename InstanceType , int ImplTagId>
static ThatClass Arccore::Ref< InstanceType, ImplTagId >::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 238 du fichier arccore/src/base/arccore/base/Ref.h.

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

◆ createRef()

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

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

◆ createWithHandle()

template<typename InstanceType , int ImplTagId>
static ThatClass Arccore::Ref< InstanceType, ImplTagId >::createWithHandle ( InstanceType *  t,
Internal::ExternalRef< InstanceType, ImplTagId >  handle 
)
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.

◆ get()

template<typename InstanceType , int ImplTagId>
InstanceType * Arccore::Ref< InstanceType, ImplTagId >::get ( ) const
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().

◆ isNull()

template<typename InstanceType , int ImplTagId>
bool Arccore::Ref< InstanceType, ImplTagId >::isNull ( ) const
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.

◆ operator bool()

template<typename InstanceType , int ImplTagId>
Arccore::Ref< InstanceType, ImplTagId >::operator bool ( ) const
inline

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

◆ operator->()

template<typename InstanceType , int ImplTagId>
InstanceType * Arccore::Ref< InstanceType, ImplTagId >::operator-> ( ) const
inline

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

◆ reset()

template<typename InstanceType , int ImplTagId>
void Arccore::Ref< InstanceType, ImplTagId >::reset ( )
inline

Positionne l'instance au pointeur nul.

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

Documentation des fonctions amies et associées

◆ operator!

template<typename InstanceType , int ImplTagId>
bool operator! ( const ThatClass a)
friend

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

◆ operator!=

template<typename InstanceType , int ImplTagId>
bool operator!= ( const ThatClass a,
const ThatClass b 
)
friend

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

◆ operator<

template<typename InstanceType , int ImplTagId>
bool operator< ( const ThatClass a,
const ThatClass b 
)
friend

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

◆ operator==

template<typename InstanceType , int ImplTagId>
bool operator== ( const ThatClass a,
const ThatClass b 
)
friend

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

Documentation des données membres

◆ m_instance

template<typename InstanceType , int ImplTagId>
ImplType Arccore::Ref< InstanceType, ImplTagId >::m_instance
private

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

◆ RefType

template<typename InstanceType , int ImplTagId>
constexpr int Arccore::Ref< InstanceType, ImplTagId >::RefType = RefTraitsTagId<InstanceType, ImplTagId>::RefType
staticconstexpr

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


La documentation de cette classe a été générée à partir du fichier suivant :