Référence à une variable. Plus de détails...
#include <arcane/core/VariableRef.h>
Classes | |
class | UpdateNotifyFunctorList |
Classe interne pour gérer les fonctor appelés lors de la mise à jour de la variable. Plus de détails... | |
Fonctions membres publiques | |
virtual | ~VariableRef () |
Libère les ressources. | |
ISubDomain * | subDomain () const |
Sous-domaine associé à la variable (TODO rendre obsolète fin 2023) | |
IVariableMng * | variableMng () const |
Gestionnaire de variable associé à la variable. | |
String | name () const |
Nom de la variable. | |
virtual eDataType | dataType () const |
Type de la variable (Real, Integer, ...) | |
virtual void | print (std::ostream &o) const |
Affiche la valeur de la variable. | |
virtual IModule * | module () const |
Module associé à la variable (ou nullptr, s'il n'y en a pas) | |
virtual int | property () const |
Propriétés de la variable. | |
virtual int | referenceProperty () const |
Propriétés de la référence (interne) | |
virtual void | setProperty (int property) |
Positionne la propriété property. | |
virtual void | unsetProperty (int property) |
Supprime la propriété property. | |
virtual void | registerVariable () |
Enregistre la variable (interne) | |
virtual void | unregisterVariable () |
Supprime l'enregistrement de la variable (interne) | |
IVariable * | variable () const |
Variable associée. | |
virtual Integer | checkIfSync (int max_print=0) |
Vérifie si la variable est bien synchronisée. | |
virtual Integer | checkIfSameOnAllReplica (int max_print=0) |
Vérifie si la variable a les mêmes valeurs sur tous les réplicas. | |
virtual void | updateFromInternal () |
Mise à jour à partir de la partie interne. | |
virtual Integer | arraySize () const |
Si la variable est un tableau, retourne sa dimension, sinon retourne 0. | |
void | setUsed (bool v) |
bool | isUsed () const |
virtual void | internalSetUsed (bool) |
const String & | assignmentStackTrace () const |
Pile d'appel au moment de l'assignation de cette instance. | |
void | addTag (const String &tagname, const String &tagvalue) |
Ajoute le tag tagname avev la valeur tagvalue. | |
void | removeTag (const String &tagname) |
Supprime le tag tagname. | |
bool | hasTag (const String &tagname) const |
true si la variable possède le tag tagname | |
String | tagValue (const String &tagname) const |
Valeur du tag tagname. La chaîne est nulle si le tag n'existe pas. | |
Fonctions membres protégées | |
VariableRef (const VariableBuildInfo &vbi) | |
Construit une référence sur une variable avec les infos vbi. | |
VariableRef (const VariableRef &from) | |
Constructeur de copie. | |
VariableRef (IVariable *var) | |
Construit une référence sur une variable var. | |
VariableRef & | operator= (const VariableRef &from) |
Opérateur de recopie. | |
VariableRef () | |
Constructeur vide. | |
Amis | |
class | UpdateNotifyFunctorList |
Gestion des dépendances | |
Opérations liées à la gestion des dépendances des variables. | |
IVariable * | m_variable = nullptr |
Variable associée. | |
IModule * | m_module = nullptr |
Module associé (ou 0 si aucun) | |
bool | m_is_registered = false |
true si la variable a été enregistrée | |
int | m_reference_property = 0 |
Propriétés de la référence. | |
VariableRef * | m_previous_reference = nullptr |
Référence précédente sur m_variable. | |
VariableRef * | m_next_reference = nullptr |
Référence suivante sur m_variable. | |
String | m_assignment_stack_trace |
Pile d'appel lors de l'assignation de la variable. | |
UpdateNotifyFunctorList * | m_notify_functor_list = nullptr |
bool | m_has_trace = false |
static bool | m_static_has_trace_creation = false |
void | _setComputeFunction (IVariableComputeFunction *v) |
void | _internalInit (IVariable *) |
Initialisation interne de la variable. | |
IVariable * | _variable () const |
Variable référencée. | |
void | _executeUpdateFunctors () |
void | _internalAssignVariable (const VariableRef &var) |
void | update () |
Recalcule la variable si nécessaire. | |
void | setUpToDate () |
Indique que la variable vient d'être mise à jour. | |
Int64 | modifiedTime () |
Temps auquel la variable a été mise à jour. | |
void | addDependCurrentTime (const VariableRef &var) |
Ajoute var à la liste des dépendances au temps courant. | |
void | addDependCurrentTime (const VariableRef &var, const TraceInfo &tinfo) |
Ajoute var à la liste des dépendances au temps courant avec les infos de trace tinfo. | |
void | addDependPreviousTime (const VariableRef &var) |
Ajoute var à la liste des dépendances au temps précédent. | |
void | addDependPreviousTime (const VariableRef &var, const TraceInfo &tinfo) |
Ajoute var à la liste des dépendances au temps précédent avec les infos de trace tinfo. | |
void | removeDepend (const VariableRef &var) |
Supprime var de la liste des dépendances. | |
template<typename ClassType > | |
void | setComputeFunction (ClassType *instance, void(ClassType::*func)()) |
Positionne la fonction de recalcule de la variable. | |
template<typename ClassType > | |
void | setComputeFunction (ClassType *instance, void(ClassType::*func)(), const TraceInfo &tinfo) |
Positionne la fonction de recalcule de la variable. | |
VariableRef * | previousReference () |
Référence précédente (ou null) sur variable() | |
VariableRef * | nextReference () |
Référence suivante (ou null) sur variable() | |
void | setPreviousReference (VariableRef *v) |
Positionne la référence précédente. | |
void | setNextReference (VariableRef *v) |
Positionne la référence suivante. | |
static void | setTraceCreation (bool v) |
static bool | hasTraceCreation () |
void | _checkValid () const |
void | _throwInvalid () const |
bool | _checkValidPropertyChanged (int property) |
Regarde si une propriété peut-être changée dynamiquement. | |
void | _setAssignmentStackTrace () |
Référence à une variable.
Cette classe gère une référence sur une variable (IVariable).
Si la variable n'est pas associée à un module, la méthode module() retourne 0.
Cette classe doit obligatoirement être dérivée.
La classe la plus dérivée de cette classe doit appeler _internalInit() dans son constructeur. Elle seule doit le faire, et dans le constructeur pour garantir que la référence à la variable est valide dès que l'objet est construit et que les méthodes virtuelles qui doivent être appelés lors de cette initialisation correspondent à l'instance en cours de création.
Définition à la ligne 55 du fichier VariableRef.h.
|
explicitprotected |
Construit une référence sur une variable avec les infos vbi.
Définition à la ligne 125 du fichier VariableRef.cc.
|
protected |
Constructeur de copie.
Définition à la ligne 165 du fichier VariableRef.cc.
Références registerVariable().
|
explicitprotected |
Construit une référence sur une variable var.
Définition à la ligne 138 du fichier VariableRef.cc.
|
protected |
Constructeur vide.
Constructeur pour une variable non enregistree.
Ce constructeur n'est utilise que pour le wrapping C#. En C++, il n'est pas accessible pour être sur que l'utilisateur n'a pas de variables non référencées
Définition à la ligne 157 du fichier VariableRef.cc.
|
virtual |
Libère les ressources.
Définition à la ligne 196 du fichier VariableRef.cc.
Références m_is_registered, et unregisterVariable().
|
inlineprivate |
Définition à la ligne 336 du fichier VariableRef.h.
Regarde si une propriété peut-être changée dynamiquement.
Définition à la ligne 396 du fichier VariableRef.cc.
Références Arcane::IVariable::PExecutionDepend, Arcane::IVariable::PHasTrace, Arcane::IVariable::PNoDump, Arcane::IVariable::PNoExchange, Arcane::IVariable::PNoNeedSync, Arcane::IVariable::PNoReplicaSync, Arcane::IVariable::PNoRestore, Arcane::IVariable::PPersistant, Arcane::IVariable::PPrivate, property(), Arcane::IVariable::PSubDomainDepend, et Arcane::IVariable::PSubDomainPrivate.
Référencé par setProperty(), et unsetProperty().
|
protected |
Définition à la ligne 604 du fichier VariableRef.cc.
|
protected |
Définition à la ligne 614 du fichier VariableRef.cc.
Initialisation interne de la variable.
Définition à la ligne 248 du fichier VariableRef.cc.
Références Arcane::IK_Unknown, Arcane::IVariable::itemKind(), m_variable, registerVariable(), updateFromInternal(), et variable().
Référencé par Arcane::VariableRefArray2T< T >::VariableRefArray2T(), Arcane::VariableRefScalarT< DataType >::VariableRefScalarT(), et Arcane::VariableRefScalarT< DataType >::VariableRefScalarT().
|
private |
Définition à la ligne 211 du fichier VariableRef.cc.
|
protected |
Définition à la ligne 497 du fichier VariableRef.cc.
|
private |
Définition à la ligne 360 du fichier VariableRef.cc.
|
inlineprotected |
Variable référencée.
Cette méthode vérifie qu'une variable est bien référencée.
Définition à la ligne 295 du fichier VariableRef.h.
void Arcane::VariableRef::addDependCurrentTime | ( | const VariableRef & | var | ) |
Ajoute var à la liste des dépendances au temps courant.
Définition à la ligne 452 du fichier VariableRef.cc.
Références Arcane::IVariable::addDepend(), et m_variable.
void Arcane::VariableRef::addDependCurrentTime | ( | const VariableRef & | var, |
const TraceInfo & | tinfo | ||
) |
Ajoute var à la liste des dépendances au temps courant avec les infos de trace tinfo.
Définition à la ligne 470 du fichier VariableRef.cc.
Références Arcane::IVariable::addDepend(), et m_variable.
void Arcane::VariableRef::addDependPreviousTime | ( | const VariableRef & | var | ) |
Ajoute var à la liste des dépendances au temps précédent.
Définition à la ligne 461 du fichier VariableRef.cc.
Références Arcane::IVariable::addDepend(), et m_variable.
void Arcane::VariableRef::addDependPreviousTime | ( | const VariableRef & | var, |
const TraceInfo & | tinfo | ||
) |
Ajoute var à la liste des dépendances au temps précédent avec les infos de trace tinfo.
Définition à la ligne 479 du fichier VariableRef.cc.
Références Arcane::IVariable::addDepend(), et m_variable.
Ajoute le tag tagname avev la valeur tagvalue.
Définition à la ligne 506 du fichier VariableRef.cc.
Références Arcane::IVariable::addTag(), et m_variable.
|
inlinevirtual |
Si la variable est un tableau, retourne sa dimension, sinon retourne 0.
Réimplémentée dans Arcane::PrivateVariableArrayT< DataType >, Arcane::PrivateVariableArrayT< Byte >, Arcane::PrivateVariableArrayT< DataTypeT >, Arcane::PrivateVariableArrayT< Real >, Arcane::PrivateVariableArrayT< Real3 >, Arcane::PrivateVariableScalarT< DataType >, Arcane::PrivateVariableScalarT< Byte >, Arcane::PrivateVariableScalarT< DataTypeT >, Arcane::PrivateVariableScalarT< Int32 >, Arcane::PrivateVariableScalarT< Int64 >, Arcane::PrivateVariableScalarT< IntAggregator >, Arcane::PrivateVariableScalarT< Integer >, Arcane::PrivateVariableScalarT< Real >, Arcane::PrivateVariableScalarT< Real3 >, Arcane::VariableRefArray2T< T >, Arcane::VariableRefArray2T< Int32 >, Arcane::VariableRefScalarT< DataType >, Arcane::VariableRefScalarT< Int32 >, Arcane::VariableRefScalarT< Int64 >, Arcane::VariableRefScalarT< Integer >, Arcane::VariableRefScalarT< Real >, Arcane::VariableRefScalarT< String >, Arcane::VariableRefArrayT< T >, Arcane::VariableRefArrayT< Byte >, Arcane::VariableRefArrayT< DataType >, Arcane::VariableRefArrayT< Int16 >, Arcane::VariableRefArrayT< Int32 >, Arcane::VariableRefArrayT< Int64 >, Arcane::VariableRefArrayT< Integer >, Arcane::VariableRefArrayT< Real >, Arcane::VariableRefArrayT< Real2 >, et Arcane::VariableRefArrayT< String >.
Définition à la ligne 143 du fichier VariableRef.h.
|
inline |
Pile d'appel au moment de l'assignation de cette instance.
La pile n'est accessible qu'en mode vérification ou débug. Si ce n'est pas le cas, retourne une chaîne nulle.
Définition à la ligne 160 du fichier VariableRef.h.
|
virtual |
Vérifie si la variable a les mêmes valeurs sur tous les réplicas.
Définition à la ligne 333 du fichier VariableRef.cc.
Références Arcane::IVariable::checkIfSameOnAllReplica(), et m_variable.
|
virtual |
Vérifie si la variable est bien synchronisée.
Définition à la ligne 323 du fichier VariableRef.cc.
Références Arcane::IVariable::checkIfSync(), et m_variable.
Référencé par Arcane::ItemGroupsSynchronize::checkSynchronize().
|
virtual |
Type de la variable (Real, Integer, ...)
Définition à la ligne 263 du fichier VariableRef.cc.
Références Arcane::IVariable::dataType(), et m_variable.
true si la variable possède le tag tagname
Définition à la ligne 524 du fichier VariableRef.cc.
Références Arcane::IVariable::hasTag(), et m_variable.
|
static |
Définition à la ligne 595 du fichier VariableRef.cc.
Définition à la ligne 150 du fichier VariableRef.h.
|
inline |
Définition à la ligne 148 du fichier VariableRef.h.
Int64 Arcane::VariableRef::modifiedTime | ( | ) |
Temps auquel la variable a été mise à jour.
Définition à la ligne 443 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::modifiedTime().
Module associé à la variable (ou nullptr, s'il n'y en a pas)
Définition à la ligne 104 du fichier VariableRef.h.
String Arcane::VariableRef::name | ( | ) | const |
Nom de la variable.
Définition à la ligne 283 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::name().
Référencé par Arcane::mesh::DynamicMesh::_prepareForDumpReal(), Arcane::TimeHistoryMngInternal::addNowInGlobalTime(), Arcane::ModuleMaster::dumpStandardCurves(), Arcane::GetVariablesValuesParallelOperation::getVariableValues(), et Arcane::GetVariablesValuesParallelOperation::getVariableValues().
VariableRef * Arcane::VariableRef::nextReference | ( | ) |
Référence suivante (ou null) sur variable()
Définition à la ligne 551 du fichier VariableRef.cc.
Références m_next_reference.
Référencé par Arcane::Variable::removeVariableRef().
|
protected |
Opérateur de recopie.
Définition à la ligne 183 du fichier VariableRef.cc.
Références m_variable.
Référencé par Arcane::VariableRefArray2T< Int32 >::internalContainer(), Arcane::VariableRefArray2T< T >::refersTo(), Arcane::VariableRefArrayT< T >::refersTo(), et Arcane::VariableRefScalarT< DataType >::refersTo().
VariableRef * Arcane::VariableRef::previousReference | ( | ) |
Référence précédente (ou null) sur variable()
Définition à la ligne 542 du fichier VariableRef.cc.
Références m_previous_reference.
|
virtual |
Affiche la valeur de la variable.
Définition à la ligne 273 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::print().
|
virtual |
Propriétés de la variable.
Définition à la ligne 293 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::property().
Référencé par _checkValidPropertyChanged(), setProperty(), et unsetProperty().
|
virtual |
Propriétés de la référence (interne)
Définition à la ligne 343 du fichier VariableRef.cc.
Références m_reference_property.
|
virtual |
Enregistre la variable (interne)
Définition à la ligne 237 du fichier VariableRef.cc.
Références Arcane::IVariable::addVariableRef(), m_is_registered, et m_variable.
Référencé par _internalInit(), et VariableRef().
void Arcane::VariableRef::removeDepend | ( | const VariableRef & | var | ) |
Supprime var de la liste des dépendances.
Définition à la ligne 488 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::removeDepend().
Supprime le tag tagname.
Si le tag tagname n'est pas dans la liste, rien ne se passe.
Définition à la ligne 515 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::removeTag().
|
inline |
Positionne la fonction de recalcule de la variable.
Si une fonction de recalcule existait déjà, elle est détruite et remplacée par celle-ci.
Définition à la ligne 229 du fichier VariableRef.h.
|
inline |
Positionne la fonction de recalcule de la variable.
Si une fonction de recalcule existait déjà, elle est détruite et remplacée par celle-ci. tinfo contient les infos permettant de savoir où est défini la fonction (pour le débug)
Définition à la ligne 242 du fichier VariableRef.h.
void Arcane::VariableRef::setNextReference | ( | VariableRef * | v | ) |
Positionne la référence suivante.
For internal use only.
Définition à la ligne 569 du fichier VariableRef.cc.
Références m_next_reference.
void Arcane::VariableRef::setPreviousReference | ( | VariableRef * | v | ) |
Positionne la référence précédente.
For internal use only.
Définition à la ligne 560 du fichier VariableRef.cc.
Références m_previous_reference.
Positionne la propriété property.
Définition à la ligne 370 du fichier VariableRef.cc.
Références _checkValidPropertyChanged(), m_reference_property, m_variable, Arcane::IVariable::notifyReferencePropertyChanged(), et property().
Définition à la ligne 586 du fichier VariableRef.cc.
void Arcane::VariableRef::setUpToDate | ( | ) |
Indique que la variable vient d'être mise à jour.
Pour une gestion correcte des dépendances, il faut que cette propriété soit appelée toutes les fois où la mise à jour d'une variable a été effectuée.
Définition à la ligne 434 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::setUpToDate().
Définition à la ligne 147 du fichier VariableRef.h.
ISubDomain * Arcane::VariableRef::subDomain | ( | ) | const |
Sous-domaine associé à la variable (TODO rendre obsolète fin 2023)
Définition à la ligne 303 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::subDomain().
Valeur du tag tagname. La chaîne est nulle si le tag n'existe pas.
Définition à la ligne 533 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::tagValue().
|
virtual |
Supprime l'enregistrement de la variable (interne)
Définition à la ligne 226 du fichier VariableRef.cc.
Références m_is_registered, m_variable, et Arcane::IVariable::removeVariableRef().
Référencé par ~VariableRef().
Supprime la propriété property.
Définition à la ligne 382 du fichier VariableRef.cc.
Références _checkValidPropertyChanged(), m_reference_property, m_variable, Arcane::IVariable::notifyReferencePropertyChanged(), et property().
void Arcane::VariableRef::update | ( | ) |
Recalcule la variable si nécessaire.
Par le mécanisme de dépendances, cette opération est appelée récursivement sur toutes les variables dont dépend l'instance. La fonction de recalcul computeFunction() est ensuite appelée s'il s'avère qu'une des variables dont elle dépend a été modifiée plus récemment.
Définition à la ligne 425 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::update().
|
virtual |
Mise à jour à partir de la partie interne.
Réimplémentée dans Arcane::PrivateVariableArrayT< DataType >, Arcane::PrivateVariableArrayT< Byte >, Arcane::PrivateVariableArrayT< DataTypeT >, Arcane::PrivateVariableArrayT< Real >, Arcane::PrivateVariableArrayT< Real3 >, Arcane::PrivateVariableScalarT< DataType >, Arcane::PrivateVariableScalarT< Byte >, Arcane::PrivateVariableScalarT< DataTypeT >, Arcane::PrivateVariableScalarT< Int32 >, Arcane::PrivateVariableScalarT< Int64 >, Arcane::PrivateVariableScalarT< IntAggregator >, Arcane::PrivateVariableScalarT< Integer >, Arcane::PrivateVariableScalarT< Real >, Arcane::PrivateVariableScalarT< Real3 >, Arcane::VariableRefArray2T< T >, Arcane::VariableRefArray2T< Int32 >, Arcane::VariableRefScalarT< DataType >, Arcane::VariableRefScalarT< Int32 >, Arcane::VariableRefScalarT< Int64 >, Arcane::VariableRefScalarT< Integer >, Arcane::VariableRefScalarT< Real >, Arcane::VariableRefScalarT< String >, Arcane::MeshMDVariableRefBaseT< ItemType, DataType, Extents >, Arcane::MeshMDVariableRefBaseT< ItemType, DataType, Extents::template AddedFirstExtentsType< DynExtent > >, Arcane::MeshMDVariableRefBaseT< ItemType, DataType, Extents::template AddedFirstLastExtentsType< DynExtent, Size > >, Arcane::MeshMDVariableRefBaseT< ItemType, DataType, Extents::template AddedFirstLastLastExtentsType< DynExtent, Row, Column > >, Arcane::MeshVectorMDVariableRefT< ItemType, DataType, Size, Extents >, Arcane::MeshMatrixMDVariableRefT< ItemType, DataType, Row, Column, Extents >, Arcane::VariableRefArrayT< T >, Arcane::VariableRefArrayT< Byte >, Arcane::VariableRefArrayT< DataType >, Arcane::VariableRefArrayT< Int16 >, Arcane::VariableRefArrayT< Int32 >, Arcane::VariableRefArrayT< Int64 >, Arcane::VariableRefArrayT< Integer >, Arcane::VariableRefArrayT< Real >, Arcane::VariableRefArrayT< Real2 >, et Arcane::VariableRefArrayT< String >.
Définition à la ligne 352 du fichier VariableRef.cc.
Référencé par _internalInit().
|
inline |
Variable associée.
Définition à la ligne 126 du fichier VariableRef.h.
Référencé par _internalInit(), Arcane::GetVariablesValuesParallelOperation::getVariableValues(), Arcane::GeomShapeMng::initialize(), Arcane::mesh::IncrementalItemConnectivityBase::notifySourceFamilyLocalIdChanged(), Arcane::mesh::OneItemIncrementalItemConnectivity::notifySourceFamilyLocalIdChanged(), Arcane::ItemGroupImplInternal::setMemoryRessourceForItemLocalId(), et Arcane::ItemGroupImpl::shrinkMemory().
IVariableMng * Arcane::VariableRef::variableMng | ( | ) | const |
Gestionnaire de variable associé à la variable.
Définition à la ligne 313 du fichier VariableRef.cc.
Références m_variable, et Arcane::IVariable::variableMng().
|
friend |
Définition à la ligne 60 du fichier VariableRef.h.
|
private |
Pile d'appel lors de l'assignation de la variable.
Utilisé uniquement lorsque les traces sont actives.
Définition à la ligne 326 du fichier VariableRef.h.
Définition à la ligne 332 du fichier VariableRef.h.
true si la variable a été enregistrée
Définition à la ligne 310 du fichier VariableRef.h.
Référencé par registerVariable(), unregisterVariable(), et ~VariableRef().
Module associé (ou 0 si aucun)
Définition à la ligne 307 du fichier VariableRef.h.
|
private |
Référence suivante sur m_variable.
Définition à la ligne 319 du fichier VariableRef.h.
Référencé par nextReference(), et setNextReference().
|
private |
Définition à la ligne 354 du fichier VariableRef.h.
|
private |
Référence précédente sur m_variable.
Définition à la ligne 316 du fichier VariableRef.h.
Référencé par previousReference(), et setPreviousReference().
|
private |
Propriétés de la référence.
Définition à la ligne 313 du fichier VariableRef.h.
Référencé par referenceProperty(), setProperty(), et unsetProperty().
Définition à la ligne 353 du fichier VariableRef.h.
Variable associée.
Définition à la ligne 304 du fichier VariableRef.h.
Référencé par _internalInit(), addDependCurrentTime(), addDependCurrentTime(), addDependPreviousTime(), addDependPreviousTime(), addTag(), checkIfSameOnAllReplica(), checkIfSync(), dataType(), hasTag(), modifiedTime(), name(), operator=(), print(), property(), registerVariable(), removeDepend(), removeTag(), setProperty(), setUpToDate(), subDomain(), tagValue(), unregisterVariable(), unsetProperty(), update(), et variableMng().