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"
57 friend class VariableIOWriterMng;
58 friend class VariableIOReaderMng;
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()) {
78 h = hash(h, m_mesh_name.localstr());
81 if (!m_family_name.null()) {
82 h = hash(h, m_family_name.localstr());
85 h = hash(h, m_local_name.localstr());
95 for (; *p !=
'\0'; ++p)
96 h = (h << 5) - h + *p;
109 typedef Int32 HashValueType;
113 return key.hash() & 0x7fffffff;
128 void build()
override { m_variable_mng->build(); }
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;
216 static bool isVariableToSave(
IVariable& var);
236 VariableList m_variables;
237 VariableList m_used_variables;
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;
260 VariableIOWriterMng* m_variable_io_writer_mng =
nullptr;
261 VariableIOReaderMng* m_variable_io_reader_mng =
nullptr;
271 static const char* _msgClassName() {
return "Variable"; }
281class VariableIOWriterMng
293 return VariableMng::isVariableToSave(var);
311 bool m_use_hash_v2 =
false;
320 static const char* _msgClassName() {
return "Variable"; }
328class VariableIOReaderMng
351 bool m_is_use_json_metadata =
true;
360 void _readMeshesMetaData(
JSONValue meshes_json,
const XmlNode& meshes_node);
362 void _finalizeReadVariables(
const VariableList& vars_to_read);
363 static const char* _msgClassName() {
return "Variable"; }
Interface du gestionnaire des accélérateurs.
Informations de relecture d'une protection.
Classe de base d'un handler d'évènement.
Table de hachage pour tableaux associatifs.
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.
Interface du gestionnaire de traces.
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.
Implémentation d'une collection d'éléments sous forme de vecteur.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
ITraceMng * traceMng() const
Gestionnaire de trace.
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.
VariableMng(ISubDomain *sd)
Construit un gestionnaire de variable pour le cas pn.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< VariableRef * > VariableRefCollection
Collection de variables.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
List< VariableRef * > VariableRefList
Tableau de références de variables.
std::int32_t Int32
Type entier signé sur 32 bits.
Structure équivalente à la valeur booléenne vrai.