Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ParameterOption.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ParameterOption.h (C) 2000-2025 */
9/* */
10/* Classe représentant l'ensemble des paramètres pouvant modifier les */
11/* options du jeu de données. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_UTILS_INTERNAL_PARAMETEROPTION_H
15#define ARCANE_UTILS_INTERNAL_PARAMETEROPTION_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
21#include "arcane/utils/String.h"
22#include "arcane/utils/List.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
45class ARCANE_UTILS_EXPORT
47{
48 public:
49 static constexpr const char* ANY_TAG = "/";
50 static constexpr Integer ANY_INDEX = -1;
51 static constexpr Integer GET_INDEX = -2;
52
53 public:
54
59
64 explicit ParameterOptionAddrPart(const StringView tag);
65
72 ParameterOptionAddrPart(const StringView tag, const Integer index);
73
74 public:
75
76 StringView tag() const;
77 Integer index() const;
78
81 void setTag(const StringView tag);
82 void setIndex(const Integer index);
83
85 bool isAny() const;
86
93 bool operator==(const ParameterOptionAddrPart& other) const;
94 // TODO AH : À supprimer lors du passage en C++20.
95 bool operator!=(const ParameterOptionAddrPart& other) const;
96
97 private:
98
99 StringView m_tag;
100 Integer m_index;
101};
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
127class ARCANE_UTILS_EXPORT
129{
130 public:
131
136 explicit ParameterOptionAddr(StringView addr_str_view);
137
138 public:
139
140 // On ne doit pas bloquer les multiples ParameterOptionAddrPart(ANY) :
141 // Construction par iteration : aaaa/bb/ANY/ANY/cc
148
158 ParameterOptionAddrPart* addrPart(const Integer index_of_part) const;
159
160 ParameterOptionAddrPart* lastAddrPart() const;
161
168 Integer nbAddrPart() const;
169
193 bool getIndexInAddr(const ParameterOptionAddr& addr_with_get_index, ArrayView<Integer> indexes) const;
194
200
201 public:
202
212 bool operator==(const ParameterOptionAddr& other) const;
213
214 // TODO AH : À supprimer lors du passage en C++20.
215 bool operator!=(const ParameterOptionAddr& other) const;
216
217 private:
218
220};
221
222/*---------------------------------------------------------------------------*/
223/*---------------------------------------------------------------------------*/
224
229class ARCANE_UTILS_EXPORT
230ParameterOptionElement
231{
232 public:
233
234 ParameterOptionElement(const StringView addr, const StringView value);
235
236 ParameterOptionAddr addr() const;
237
238 StringView value() const;
239
240 bool operator==(const ParameterOptionAddr& addr) const;
241
242 private:
243
244 ParameterOptionAddr m_addr;
245 StringView m_value;
246};
247
248/*---------------------------------------------------------------------------*/
249/*---------------------------------------------------------------------------*/
250
254class ARCANE_UTILS_EXPORT
256{
257 public:
258
269 void addParameter(const String& parameter, const String& value);
270
271 void addElement(StringView addr, StringView value);
272
273 // ParameterOptionElement element(const Integer index)
274 // {
275 // return m_elements[index];
276 // }
277
278 // Un StringView "vide" est éqal à un StringView "nul".
279 // Comme on travaille avec des String et que la distinction
280 // vide/nul est importante, on passe par un std::optional.
281 std::optional<StringView> value(const ParameterOptionAddr& addr);
282
289 bool isExistAddr(const ParameterOptionAddr& addr);
290
299
321 void getIndexInAddr(const ParameterOptionAddr& addr_with_get_index, UniqueArray<Integer>& indexes);
322
323 private:
324
326};
327
328
329/*---------------------------------------------------------------------------*/
330/*---------------------------------------------------------------------------*/
331
332} // End namespace Arcane
333
334/*---------------------------------------------------------------------------*/
335/*---------------------------------------------------------------------------*/
336
337#endif
Déclarations des types utilisés dans Arcane.
Vue modifiable d'un tableau d'un type T.
Classe représentant une partie d'une adresse d'option du jeu de données. À noter qu'en XML,...
ParameterOptionAddrPart()
Constructeur. Définit le tag en ANY_TAG et l'index en ANY_INDEX.
bool isAny() const
isAny si ANY_TAG et ANY_INDEX.
bool operator==(const ParameterOptionAddrPart &other) const
Opérateur d'égalité. Le tag ANY_TAG est égal à tous les tags. L'index ANY_INDEX est égal à tous les i...
void setTag(const StringView tag)
Classe représentant une adresse d'option du jeu de données. Cette adresse doit être de la forme : "ta...
bool operator==(const ParameterOptionAddr &other) const
Opérateur d'égalité. Cet opérateur tient compte des ANY_TAG / ANY_INDEX. L'adresse "aaa[1]/bbb[2]/ANY...
ParameterOptionAddrPart * addrPart(const Integer index_of_part) const
Méthode permettant de récupérer une partie de l'adresse. Si l'adresse termine par un ANY_TAG[ANY_INDE...
ParameterOptionAddr(StringView addr_str_view)
Constructeur.
Integer nbAddrPart() const
Méthode permettant de récupérer le nombre de partie de l'adresse. Les parties égales à "ANY_TAG[ANY_I...
Integer nbIndexToGetInAddr() const
Méthode permettant de savoir combien il y a de "GET_INDEX" dans l'adresse.
bool getIndexInAddr(const ParameterOptionAddr &addr_with_get_index, ArrayView< Integer > indexes) const
Méthode permettant de récupérer un ou plusieurs indices dans l'adresse.
void addAddrPart(ParameterOptionAddrPart *part)
Méthode permettant d'ajouter une partie à la fin de l'adresse actuelle.
Classe représentant un ensemble d'éléments XML (un ensemble d'options Arcane).
bool isExistAddr(const ParameterOptionAddr &addr)
Méthode permettant de savoir si une adresse est présente dans la liste d'éléments....
Integer countAddr(const ParameterOptionAddr &addr)
Méthode permettant de savoir combien de fois une adresse est présente dans la liste d'élements....
void addParameter(const String &parameter, const String &value)
Méthode permettant d'ajouter un paramètre d'option dans la liste des paramètres d'options.
void getIndexInAddr(const ParameterOptionAddr &addr_with_get_index, UniqueArray< Integer > &indexes)
Méthode permettant de récupérer un ou plusieurs indices dans la liste d'adresses.
Vue sur une chaîne de caractères UTF-8.
Definition StringView.h:47
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.