12#ifndef ARCANE_IMPL_INTERNAL_VARIABLEMNG_H
13#define ARCANE_IMPL_INTERNAL_VARIABLEMNG_H
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/String.h"
19#include "arcane/utils/HashTableMap.h"
20#include "arcane/utils/List.h"
21#include "arcane/utils/Ref.h"
23#include "arcane/core/IVariableMng.h"
24#include "arcane/core/IVariableFilter.h"
25#include "arcane/core/VariableCollection.h"
26#include "arcane/core/internal/IVariableMngInternal.h"
28#include "arcane/accelerator/core/IAcceleratorMng.h"
41class VariableMetaDataList;
42class VariableReaderMng;
44class VariableIOWriterMng;
45class VariableIOReaderMng;
46class VariableSynchronizerMng;
69 return m_local_name ==
vni.m_local_name && m_family_name ==
vni.m_family_name && m_mesh_name ==
vni.m_mesh_name;
77 if (!m_mesh_name.
null()) {
81 if (!m_family_name.
null()) {
91 static Int32 hash(Int32
h,
const char*
p)
95 for (; *
p !=
'\0'; ++
p)
96 h = (
h << 5) -
h + *
p;
109 typedef Int32 HashValueType;
113 return key.hash() & 0x7fffffff;
158 void build()
override;
174 void dumpList(std::ostream&)
override;
195 void dumpStats(std::ostream&
ostr,
bool is_verbose)
override;
202 return m_on_variable_added;
208 return m_on_variable_removed;
238 bool m_variables_changed =
true;
239 bool m_used_variables_changed =
true;
254 Int64 m_nb_created_variable_reference = 0;
255 Int64 m_nb_created_variable = 0;
257 std::map<IVariable*, IModule*> m_variable_creation_modules;
271 static const char* _msgClassName() {
return "Variable"; }
293 return VariableMng::isVariableToSave(
var);
311 bool m_use_hash_v2 =
false;
320 static const char* _msgClassName() {
return "Variable"; }
351 bool m_is_use_json_metadata =
true;
363 static const char* _msgClassName() {
return "Variable"; }
Interface du gestionnaire des accélérateurs.
Informations de relecture d'une protection.
Interface du service de lecture d'une protection/reprise.
Interface du service d'écriture d'une protection/reprise.
Interface de lecture des données d'une variable.
Interface d'écriture des données d'une variable.
Interface d'un algorithme de hashage.
Interface d'un observable.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'un écrivain pour les informations de post-traitement.
Interface du gestionnaire d'un sous-domaine.
Interface gérant les statistiques sur les temps d'exécution.
Fonctor d'un filtre applicable sur des variables.
Interface du gestionnaire de variables.
Interface du gestionnaire de variables.
Interface du gestionnaire de synchronisation des variables.
Interface proposant des fonctions utilitaires sur les variables.
Interface d'une variable.
Représente une valeur JSON.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Paramètres nécessaires à la construction d'une variable.
Wrapper pour IDataReader2.
Interface pour utiliser IDataReader ou IDataReader2.
Wrapper pour IDataReader.
Gestion de la lecture pour les variables.
void _readMetaData(VariableMetaDataList &vmd_list, Span< const Byte > bytes)
Lecture des méta-données.
void _checkHashFunction(const VariableMetaDataList &vmd_list)
Vérifie les valeurs des fonctions de hashage.
bool applyFilter(IVariable &var) override
Applique le filtre sur la variable var.
Gestion de l'écriture pour les variables.
void _generateMeshesMetaData(JSONWriter &json_writer, XmlNode meshes_node)
void writeVariables(IDataWriter *writer, const VariableCollection &vars, bool use_hash)
Infos caractérisant une variable.
void build() override
Construit les membres de l'instance.
void initializeVariables(bool is_continue) override
Initialise les variables.
void addVariable(IVariable *var) override
Ajoute une variable.
void setAcceleratorMng(Ref< IAcceleratorMng > v) override
Positionne le gestionnaire des accélérateurs.
void removeVariableRef(VariableRef *var) override
Supprime une référence à une variable.
void addAutoDestroyVariable(VariableRef *var) override
Ajoute la variable à la liste des variables qui sont conservées jusqu'à la fin de l'exécution.
IAcceleratorMng * acceleratorMng() const override
Gestionnaire pour les accélérateurs.
void detachMeshVariables(IMesh *mesh) override
Détache les variables associées au maillage mesh.
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
void removeVariable(IVariable *var) override
Supprime une variable.
void addVariableRef(VariableRef *var) override
Ajoute une référence à une variable.
void removeAllVariables() override
Supprime et détruit les variables gérées par ce gestionnaire.
ISubDomain * internalSubDomain() const override
Fonction interne temporaire pour récupérer le sous-domaine.
Gestionnaire de variables.
IVariable * checkVariable(const VariableInfo &infos) override
Vérifie une variable.
Real exportSize(const VariableCollection &vars) override
IObservable * writeObservable() override
Observable pour les variables en écriture.
IVariable * findVariableFullyQualified(const String &name) override
Retourne la variable de nom complet name ou 0 si aucune de se nom existe.
void dumpList(std::ostream &, IModule *) override
Affiche la liste des variables du gestionnaire lié à un module.
std::map< String, IVariableFactory * > VariableFactoryMap
Type de la liste des fabriques de variables par nom complet.
IVariableMngInternal * _internalApi() override
API interne à Arcane.
IObservable * readObservable() override
Observable pour les variables en lecture.
IVariableUtilities * utilities() const override
Interface des fonctions utilitaires associées.
void _dumpVariable(const VariableRef &v, std::ostream &o)
Ecrit la valeur de la variable v sur le flot o.
void addVariable(IVariable *var) override
Ajoute une variable.
ISubDomain * m_sub_domain
Gestionnaire de sous-domaine.
void dumpStatsJSON(JSONWriter &writer) override
Ecrit les statistiques avec l'écrivain writer.
Integer m_generate_name_id
Numéro utilisé pour générer un nom de variable.
List< VariableRef * > m_auto_create_variables
Liste des variables créées automatiquement lors d'une reprise.
FullNameVariableMap m_full_name_variable_map
Liste des variables par nom complet.
void readVariables(IDataReader *, IVariableFilter *) override
Relit toutes les variables.
void writeVariables(IDataWriter *, const VariableCollection &vars) override
Exporte les variables.
void detachMeshVariables(IMesh *mesh) override
Détache les variables associées au maillage mesh.
ITraceMng * traceMng() override
Gestionnaire de messages.
String generateTemporaryVariableName() override
Génère un nom pour une variable temporaire.
void removeVariableRef(VariableRef *) override
Supprime une référence à une variable.
ISubDomain * subDomain() override
Gestionnaire du sous-domaine.
IVariable * findVariable(const String &name) override
Retourne la variable de nom name ou 0 si aucune de se nom existe.
VariableFactoryMap::value_type VariableFactoryPair
Paire de la liste des variables par nom complet.
EventObservable< const VariableStatusChangedEventArgs & > & onVariableAdded() override
Evènement envoyé lorsqu'une variable est créée.
VariableCollection usedVariables() override
Liste des variables utilisées.
void removeVariable(IVariable *var) override
Supprime une variable.
void build() override
Construit les membres de l'instance.
void notifyUsedVariableChanged() override
Notifie au gestionnaire que l'état d'une variable a changé
void addVariableRef(VariableRef *ref) override
Ajoute une référence à une variable.
IVariable * findMeshVariable(IMesh *mesh, const String &name) override
Retourne la variable du maillage de nom name ou 0 si aucune de se nom existe.
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
ISubDomain * _internalSubDomain() const override
void removeAllVariables() override
Supprime et détruit les variables gérées par ce gestionnaire.
VariableRefList m_variables_ref
Liste des variables.
FullNameVariableMap::value_type FullNameVariablePair
Paire de la liste des variables par nom complet.
void writeCheckpoint(ICheckpointWriter *) override
Ecrit les variables pour une protection.
IParallelMng * parallelMng() const override
Gestionnaire de parallélisme associé
void writePostProcessing(IPostProcessorWriter *writer) override
Ecrit les variables pour un post-traitement.
IVariableSynchronizerMng * synchronizerMng() const override
Interface du gestionnaire de synchronisation des variables.
std::map< String, IVariable * > FullNameVariableMap
Type de la liste des variables par nom complet.
~VariableMng() override
Détruit le gestionnaire.
VariableCollection variables() override
Liste des variables.
void initializeVariables(bool) override
Initialise les variables.
EventObservable< const VariableStatusChangedEventArgs & > & onVariableRemoved() override
Evènement envoyé lorsqu'une variable est détruite.
void dumpStats(std::ostream &ostr, bool is_verbose) override
Ecrit les statistiques sur les variables sur le flot ostr.
void readCheckpoint(ICheckpointReader *) override
Relit toutes les variables d'une protection.
Gestion de la lecture des variables.
Référence à une variable.
Gestionnaire des synchroniseurs de variables.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
bool null() const
Retourne true si la chaîne est nulle.
Classe d'accès aux traces.
ITraceMng * traceMng() const
Gestionnaire de trace.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Structure équivalente à la valeur booléenne vrai.