14#include "arcane/utils/TraceAccessor.h"
15#include "arcane/utils/String.h"
16#include "arcane/utils/Ref.h"
18#include "arcane/core/IPropertyMng.h"
19#include "arcane/core/Properties.h"
20#include "arcane/core/ISerializer.h"
21#include "arcane/core/SerializeBuffer.h"
22#include "arcane/core/VariableTypes.h"
23#include "arcane/core/Observable.h"
43 static const Int32 SERIALIZE_VERSION = 1;
47 ~PropertyMng()
override;
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);
91arcaneCreatePropertyMngReference(
ITraceMng* tm)
93 auto pm = arcaneCreatePropertyMng(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);
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);
220 m_write_observable.notifyAllObservers();
224 sb.
setMode(ISerializer::ModeReserve);
231 info(4) <<
"SaveProperties nb_byte=" << buf_bytes.
size();
232 bytes.
copy(buf_bytes);
241 info(4) <<
"ReadProperties nb_read_byte=" << bytes.
size();
248 m_read_observable.notifyAllObservers();
258print(std::ostream& o)
const
260 for (
const auto& v : m_properties_map) {
void copy(Span< const T > rhs)
Copie les valeurs de rhs dans l'instance.
Observable qui appelle automatiquement IObservable::detachAllObservers() dans le destructeur.
void initFromBuffer(Span< const Byte > buf)
Initialise le sérialiseur en lecture à partir des données buf.
void setSerializeTypeInfo(bool v)
Indique si on sérialise le type de donnée pour garantir la cohérence.
void allocateBuffer() override
Alloue la mémoire du sérialiseur.
void setMode(eMode new_mode) override
Positionne le fonctionnement actuel.
Interface d'un observable.
Interface du gestionnaire des propriétés.
Interface d'un sérialiseur.
void reserveInt64(Int64 n)
Réserve pour n Int64.
virtual void reserve(eBasicDataType dt, Int64 n)=0
Réserve de la mémoire pour n objets de type dt.
void reserveInt32(Int64 n)
Réserve pour n Int32.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
virtual Int64 getInt64()=0
Récupère une taille.
virtual void put(Span< const Real > values)=0
Ajoute le tableau values.
virtual void putInt32(Int32 value)=0
Ajoute l'entier value.
virtual eMode mode() const =0
Mode de fonctionnement actuel.
virtual Int32 getInt32()=0
Récupère un entier naturel.
virtual void get(ArrayView< Real > values)=0
Récupère le tableau values.
virtual void putInt64(Int64 value)=0
Ajoute l'entier value.
Interface du gestionnaire de traces.
void serialize(ISerializer *serializer)
Effectue la sérialisation des propriétés.
const String & fullName() const
Nom complet de la propriété.
void print(std::ostream &o) const
Sort les propriétés et leurs valeurs sur le flot o.
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.
Référence à une instance.
Implémentation d'un tampon pour la sérialisation.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
Classe d'accès aux traces.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
TraceMessage info() const
Flot pour un message d'information.
ITraceMng * traceMng() const
Gestionnaire de trace.
TraceMessage pwarning() const
VariableRefArrayT< Byte > VariableArrayByte
Variable tableau de type byte.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.
std::int32_t Int32
Type entier signé sur 32 bits.