14#include "arcane/utils/TraceAccessor.h"
15#include "arcane/utils/String.h"
16#include "arcane/utils/Ref.h"
18#include "arcane/IPropertyMng.h"
19#include "arcane/Properties.h"
20#include "arcane/ISerializer.h"
21#include "arcane/SerializeBuffer.h"
22#include "arcane/VariableTypes.h"
23#include "arcane/Observable.h"
43 static const Int32 SERIALIZE_VERSION = 1;
62 void print(std::ostream& o)
const override;
68 typedef std::map<String, Properties> PropertiesMapType;
70 PropertiesMapType m_properties_map;
79extern "C++" IPropertyMng*
80arcaneCreatePropertyMng(ITraceMng* tm)
82 auto pm =
new PropertyMng(tm);
90extern "C++" Ref<IPropertyMng>
91arcaneCreatePropertyMngReference(ITraceMng* tm)
93 auto pm = arcaneCreatePropertyMng(tm);
101PropertyMng(ITraceMng* tm)
103, m_property_values_var(nullptr)
113 delete m_property_values_var;
134 auto v = m_properties_map.find(
full_name);
135 if (v != m_properties_map.end())
136 return v->second.impl();
147 m_properties_map.insert(std::make_pair(
p.fullName(),
p));
156 auto v = m_properties_map.find(
p.fullName());
157 if (v != m_properties_map.end())
158 m_properties_map.erase(v);
167 switch (serializer->
mode()) {
168 case ISerializer::ModeReserve:
174 for (
auto& v : m_properties_map) {
177 v.second.serialize(serializer);
181 serializer->
putInt32(SERIALIZE_VERSION);
182 serializer->
putInt64(m_properties_map.size());
184 for (
auto& v : m_properties_map) {
185 serializer->
put(v.first);
187 v.second.serialize(serializer);
192 Int64 version = serializer->
getInt32();
193 if (version != SERIALIZE_VERSION) {
198 pwarning() <<
"Can not reading properties from imcompatible checkpoint";
204 for (Integer i = 0; i < n; ++i) {
205 serializer->
get(name);
208 p.serialize(serializer);
223 sb.setSerializeTypeInfo(
true);
224 sb.setMode(ISerializer::ModeReserve);
241 info(4) <<
"ReadProperties nb_read_byte=" << bytes.size();
244 sb.setSerializeTypeInfo(
true);
245 sb.initFromBuffer(bytes);
258print(std::ostream& o)
const
260 for (
const auto& v : m_properties_map) {
262 o <<
'[' <<
p.fullName() <<
"]\n";
Tableau d'items de types quelconques.
Observable qui appelle automatiquement IObservable::detachAllObservers() dans le destructeur.
Interface d'un observable.
virtual void build()=0
Construit l'instance.
Interface du gestionnaire des propriétés.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void notifyAllObservers() override
Notifie tous les observateurs.
Gestionnaire des protections.
void print(std::ostream &o) const override
Affiche les propriétés et leurs valeurs sur le flot o.
void destroyProperties(const Properties &p) override
Supprime les propriétés référencées par p.
IObservable * readObservable() override
Observable pour la lecture.
IObservable * writeObservable() override
Observable pour l'écriture.
void serialize(ISerializer *serializer) override
Effectue la sérialisation.
PropertiesImpl * getPropertiesImpl(const String &full_name) override
Récupère la liste de propriétés de nom complet full_name.
void writeTo(ByteArray &bytes) override
Sérialise les informations de propriété dans bytes.
void registerProperties(const Properties &p) override
Enregister les propriétés référencées par p.
void readFrom(Span< const Byte > bytes) override
Relit les informations sérialisées contenues dans bytes.
Implémentation d'un tampon pour la sérialisation.
Interface d'un sérialiseur.
virtual void get(RealArrayView values)=0
Récupère le tableau values.
virtual Int32 getInt32()=0
Récupère un entier naturel.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
virtual void putInt32(Int32 value)=0
Ajoute l'entier value.
virtual Int64 getInt64()=0
Récupère une taille.
virtual void reserve(eDataType dt, Int64 n)=0
Réserve de la mémoire pour n objets de type dt.
virtual eMode mode() const =0
Mode de fonctionnement actuel.
virtual void put(Span< const Real > values)=0
Ajoute le tableau values.
virtual void putInt64(Int64 value)=0
Ajoute l'entier value.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
Classe d'accès aux traces.
TraceMessage pwarning() const
ITraceMng * traceMng() const
Gestionnaire de trace.
TraceMessage info() const
Flot pour un message d'information.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ DT_Int32
Donnée de type entier 32 bits.
@ DT_Int64
Donnée de type entier 64 bits.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.