Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Properties.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Properties.h (C) 2000-2022 */
9/* */
10/* Liste de propriétés. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_PROPERTIES_H
13#define ARCANE_PROPERTIES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/AutoRef.h"
19#include "arcane/SharedReference.h"
20#include "arcane/ArcaneTypes.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class PropertiesImpl;
32class IPropertyMng;
33
35: public SharedReference
36{
37};
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41/*!
42 * \brief Liste de propriétés.
43 *
44 * Cette classe gère une liste de propriétés. Une propriété est
45 * caractérisée par un nom et une valeur d'un type donnée.
46 * Le nom ne doit pas contenir le caractère '.' qui sert de délimiteur
47 * pour les hiérarchies de propriétés.
48 *
49 * Les fonctions set*() permettent de positionner une propriété. Les
50 * fonctions get*() permettent de récupérer la valeur.
51 *
52 * Pour les propriétés scalaires, il existe trois manière de récupérer une
53 * valeur. Ces trois méthodes sont équivalentes sauf si la propriété n'a pas été positionnée.
54 * - via une surcharge de la méthode get(). Dans le cas où la propriété n'est pas positionnée,
55 * la valeur passée en argument est inchangée et la méthode retourne false.
56 * - via un appel explicite (par exemple getBool()). Dans le cas où la propriété n'est pas positionnée,
57 * c'est la valeur obtenue avec le constructeur par défaut pour le type concerné qui est utilisée.
58 * - via un appel explicite avec valeur par défaut possible (par exemple getBoolWithDefault()).
59 * Dans le cas où la propriété n'est pas positionnée, c'est la valeur par défaut passée en argument qui
60 * est utilisée.
61 *
62 */
63class ARCANE_CORE_EXPORT Properties
64{
65 public:
66
67 //! Créé ou récupère une liste de propriétés de nom \a name
68 Properties(IPropertyMng* pm,const String& name);
69
70 //! Créé ou récupère une liste de propriétés de nom \a name et fille de \a parent_property
71 Properties(const Properties& parent_property,const String& name);
72
73 //! Constructeur par recopie
74 Properties(const Properties& rhs);
75 //! Opérateur de recopie
76 const Properties& operator=(const Properties& rhs);
77 //! Détruit la référence à cette propriété
78 virtual ~Properties();
79
80 public:
81
82 //! Positionne une propriété de type bool de nom \a name et de valeur \a value.
83 void setBool(const String& name,bool value);
84
85 //! Positionne une propriété de type bool de nom \a name et de valeur \a value.
86 void set(const String& name,bool value);
87
88 //! Valeur de la propriété de nom \a name.
89 bool getBool(const String& name) const;
90
91 //! Valeur de la propriété de nom \a name.
92 bool getBoolWithDefault(const String& name,bool default_value) const;
93
94 //! Valeur de la propriété de nom \a name.
95 bool get(const String& name,bool& value) const;
96
97 //! Positionne une propriété de type Int32 de nom \a name et de valeur \a value.
98 void setInt32(const String& name,Int32 value);
99
100 //! Positionne une propriété de type Int32 de nom \a name et de valeur \a value.
101 void set(const String& name,Int32 value);
102
103 //! Valeur de la propriété de nom \a name.
104 Int32 getInt32(const String& name) const;
105
106 //! Valeur de la propriété de nom \a name.
107 Int32 getInt32WithDefault(const String& name,Int32 default_value) const;
108
109 //! Valeur de la propriété de nom \a name.
110 bool get(const String& name,Int32& value) const;
111
112 //! Positionne une propriété de type Int64 de nom \a name et de valeur \a value.
113 void setInt64(const String& name,Int64 value);
114
115 //! Positionne une propriété de type Int64 de nom \a name et de valeur \a value.
116 void set(const String& name,Int64 value);
117
118 //! Valeur de la propriété de nom \a name.
119 Int64 getInt64(const String& name) const;
120
121 //! Valeur de la propriété de nom \a name.
122 Int64 getInt64WithDefault(const String& name,Int64 default_value) const;
123
124 //! Valeur de la propriété de nom \a name.
125 bool get(const String& name,Int64& value) const;
126
127 //! Positionne une propriété de type Integer de nom \a name et de valeur \a value.
128 void setInteger(const String& name,Integer value);
129
130 //! Valeur de la propriété de nom \a name.
131 Integer getInteger(const String& name) const;
132
133 //! Valeur de la propriété de nom \a name.
134 Integer getIntegerWithDefault(const String& name,Integer default_value) const;
135
136 //! Positionne une propriété de type Real de nom \a name et de valeur \a value.
137 void setReal(const String& name,Real value);
138
139 //! Positionne une propriété de type Real de nom \a name et de valeur \a value.
140 void set(const String& name,Real value);
141
142 //! Valeur de la propriété de nom \a name.
143 Real getReal(const String& name) const;
144
145 //! Valeur de la propriété de nom \a name.
146 Real getRealWithDefault(const String& name,Real default_value) const;
147
148 //! Valeur de la propriété de nom \a name.
149 bool get(const String& name,Real& value) const;
150
151 //! Positionne une propriété de type String de nom \a name et de valeur \a value.
152 void setString(const String& name,const String& value);
153
154 //! Positionne une propriété de type String de nom \a name et de valeur \a value.
155 void set(const String& name,const String& value);
156
157 //! Valeur de la propriété de nom \a name.
158 String getString(const String& name) const;
159
160 //! Valeur de la propriété de nom \a name.
161 String getStringWithDefault(const String& name,const String& default_value) const;
162
163 //! Valeur de la propriété de nom \a name.
164 bool get(const String& name,String& value) const;
165
166 //! Positionne une propriété de type BoolUniqueArray de nom \a name et de valeur \a value.
167 void set(const String& name,BoolConstArrayView value);
168
169 //! Valeur de la propriété de nom \a name.
170 void get(const String& name,BoolArray& value) const;
171
172 //! Positionne une propriété de type Int32UniqueArray de nom \a name et de valeur \a value.
173 void set(const String& name,Int32ConstArrayView value);
174
175 //! Valeur de la propriété de nom \a name.
176 void get(const String& name,Int32Array& value) const;
177
178 //! Positionne une propriété de type Int64UniqueArray de nom \a name et de valeur \a value.
179 void set(const String& name,Int64ConstArrayView value);
180
181 //! Valeur de la propriété de nom \a name.
182 void get(const String& name,Int64Array& value) const;
183
184 //! Positionne une propriété de type RealUniqueArray de nom \a name et de valeur \a value.
185 void set(const String& name,RealConstArrayView value);
186
187 //! Valeur de la propriété de nom \a name.
188 void get(const String& name,RealArray& value) const;
189
190 //! Positionne une propriété de type StringUniqueArray de nom \a name et de valeur \a value.
191 void set(const String& name,StringConstArrayView value);
192
193 //! Valeur de la propriété de nom \a name.
194 void get(const String& name,StringArray& value) const;
195
196 public:
197
198 //! Sort les propriétés et leurs valeurs sur le flot \a o
199 void print(std::ostream& o) const;
200
201 //! Effectue la sérialisation des propriétés
202 void serialize(ISerializer* serializer);
203
204 //! Nom de la propriété.
205 const String& name() const;
206
207 //! Nom complet de la propriété.
208 const String& fullName() const;
209
210 IPropertyMng* propertyMng() const;
211
212 /*!
213 * \brief Supprime les valeurs associées des propriétés associées à cette référence.
214 */
215 void destroy();
216
217 //! \internal
218 PropertiesImpl* impl() const { return m_p; }
219
220 //! \internal
221 PropertiesImplBase* baseImpl() const { return m_ref.get(); }
222
223 private:
224
225 PropertiesImpl* m_p;
227
228 private:
229
231};
232
233/*---------------------------------------------------------------------------*/
234/*---------------------------------------------------------------------------*/
235
236} // End namespace Arcane
237
238/*---------------------------------------------------------------------------*/
239/*---------------------------------------------------------------------------*/
240
241#endif
242
Déclarations des types utilisés dans Arcane.
Encapsulation d'un pointeur avec compteur de référence.
Definition AutoRef.h:41
Interface du gestionnaire des propriétés.
Liste de propriétés.
Definition Properties.h:64
Implémentation d'un compteur de référence utilisant std::atomic.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-