Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ParameterCaseOption.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/* ParameterCaseOption.h (C) 2000-2025 */
9/* */
10/* Classe permettant d'interroger les paramètres pour savoir si des options */
11/* du jeu de données doivent être modifiées par ceux-ci. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_UTILS_PARAMETERCASEOPTION_H
15#define ARCANE_UTILS_PARAMETERCASEOPTION_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class ParameterOptionElementsCollection;
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36/*!
37 * \brief Classe représentant l'ensemble des paramètres pouvant modifier
38 * les options du jeu de données.
39 */
40class ARCANE_UTILS_EXPORT
41ParameterCaseOption
42{
43
44 public:
45
46 ParameterCaseOption(ParameterOptionElementsCollection* parameter_options, const String& lang);
47
48 public:
49
50 /*!
51 * \brief Méthode permettant de récupérer la valeur d'une option.
52 *
53 * L'adresse de l'option est reformée comme ceci :
54 * xpath_before_index[index]/xpath_after_index
55 *
56 * xpath_before_index doit être de la forme suivante :
57 * //case/aaa/bbb[2]/ccc
58 * - le "//case/" au début (ou "//cas/" en français"),
59 * - une succession de tags avec possiblement leurs indices,
60 * - pas de "/" à la fin,
61 * - un indice peut être mise à la fin (mais il sera remplacé
62 * par celui passé en paramètre).
63 *
64 * xpath_after_index doit être de la forme suivante :
65 * ddd/eee
66 * - pas de "/" au début ni à la fin.
67 *
68 * Les indices sont des indices XML et ces indices commencent par 1.
69 *
70 * \param xpath_before_index L'adresse avant indice.
71 * \param xpath_after_index L'adresse après indice.
72 * \param index L'indice à mettre entre les deux parties de l'adresse.
73 * \return La valeur si trouvée, sinon chaîne null.
74 */
75 String getParameterOrNull(const String& xpath_before_index, const String& xpath_after_index, Integer index) const;
76
77 /*!
78 * \brief Méthode permettant de récupérer la valeur d'une option.
79 *
80 * L'adresse de l'option est reformée comme ceci :
81 * xpath_before_index[index]
82 *
83 * xpath_before_index doit être de la forme suivante :
84 * //case/aaa/bbb[2]/ccc
85 * - le "//case/" au début (ou "//cas/" en français"),
86 * - une succession de tags avec possiblement leurs indices,
87 * - pas de "/" à la fin,
88 * - un indice peut être mise à la fin (mais il sera remplacé
89 * par celui passé en paramètre).
90 *
91 * Si le paramètre allow_elems_after_index est activé, les adresses de la forme :
92 * xpath_before_index[index]/aaa/bbb
93 * seront aussi recherchées.
94 *
95 * Les indices sont des indices XML et ces indices commencent par 1.
96 *
97 * \param xpath_before_index L'adresse avant indice.
98 * \param index L'indice à mettre après l'adresse.
99 * \param allow_elems_after_index Doit-on vérifier la présence d'éléments après l'indice ?
100 * \return La valeur si trouvée, sinon chaîne null.
101 */
102 String getParameterOrNull(const String& xpath_before_index, Integer index, bool allow_elems_after_index) const;
103
104 /*!
105 * \brief Méthode permettant de récupérer la valeur d'une option.
106 *
107 * L'adresse doit être de la forme suivante :
108 * //case/aaa/bbb[2]/ccc
109 * - le "//case/" au début (ou "//cas/" en français"),
110 * - une succession de tags avec possiblement leurs indices,
111 * - pas de "/" à la fin,
112 * - un indice peut être mise à la fin.
113 *
114 * Les indices sont des indices XML et ces indices commencent par 1.
115 *
116 * \param full_xpath L'adresse à rechercher.
117 * \return La valeur si trouvée, sinon chaîne null.
118 */
119 String getParameterOrNull(const String& full_xpath) const;
120
121 /*!
122 * \brief Méthode permettant de savoir si une option est présente.
123 *
124 * L'adresse doit être de la forme suivante :
125 * //case/aaa/bbb[2]/ccc
126 * - le "//case/" au début (ou "//cas/" en français"),
127 * - une succession de tags avec possiblement leurs indices,
128 * - pas de "/" à la fin,
129 * - un indice peut être mise à la fin.
130 *
131 * Les indices sont des indices XML et ces indices commencent par 1.
132 *
133 * \param full_xpath L'adresse à rechercher.
134 * \return true si l'adresse est trouvée dans la liste.
135 */
136 bool exist(const String& full_xpath) const;
137
138 /*!
139 * \brief Méthode permettant de savoir si une option est présente.
140 *
141 * L'adresse de l'option est reformée comme ceci :
142 * xpath_before_index[ANY_INDEX]/xpath_after_index
143 *
144 * xpath_before_index doit être de la forme suivante :
145 * //case/aaa/bbb[2]/ccc
146 * - le "//case/" au début (ou "//cas/" en français"),
147 * - une succession de tags avec possiblement leurs indices,
148 * - pas de "/" à la fin,
149 * - un indice peut être mise à la fin (mais il sera remplacé
150 * par ANY_INDEX).
151 *
152 * xpath_after_index doit être de la forme suivante :
153 * ddd/eee
154 * - pas de "/" au début ni à la fin.
155 *
156 * Les indices sont des indices XML et ces indices commencent par 1.
157 * L'indice ANY_INDEX est un indice spécial désignant tous les indices.
158 *
159 * \param xpath_before_index L'adresse avant indice.
160 * \param xpath_after_index L'adresse après indice.
161 * \return true si l'adresse est trouvée dans la liste.
162 */
163 bool existAnyIndex(const String& xpath_before_index, const String& xpath_after_index) const;
164
165 /*!
166 * \brief Méthode permettant de savoir si une option est présente.
167 *
168 * L'adresse de l'option est reformée comme ceci :
169 * full_xpath[ANY_INDEX]
170 *
171 * L'adresse doit être de la forme suivante :
172 * //case/aaa/bbb[2]/ccc
173 * - le "//case/" au début (ou "//cas/" en français"),
174 * - une succession de tags avec possiblement leurs indices,
175 * - pas de "/" à la fin,
176 * - un indice peut être mise à la fin (mais il sera remplacé
177 * par ANY_INDEX).
178 *
179 * Les indices sont des indices XML et ces indices commencent par 1.
180 * L'indice ANY_INDEX est un indice spécial désignant tous les indices.
181 *
182 * \param full_xpath L'adresse à rechercher.
183 * \return true si l'adresse est trouvée dans la liste.
184 */
185 bool existAnyIndex(const String& full_xpath) const;
186
187 /*!
188 * \brief Méthode permettant de récupérer le ou les indices de l'option.
189 *
190 * L'adresse de l'option est reformée comme ceci :
191 * xpath_before_index[GET_INDEX]/xpath_after_index
192 *
193 * xpath_before_index doit être de la forme suivante :
194 * //case/aaa/bbb[2]/ccc
195 * - le "//case/" au début (ou "//cas/" en français"),
196 * - une succession de tags avec possiblement leurs indices,
197 * - pas de "/" à la fin,
198 * - un indice peut être mise à la fin (mais il sera remplacé
199 * par GET_INDEX).
200 *
201 * xpath_after_index doit être de la forme suivante :
202 * ddd/eee
203 * - pas de "/" au début ni à la fin.
204 *
205 * Les indices sont des indices XML et ces indices commencent par 1.
206 * L'indice GET_INDEX est un indice spécial désignant les indices que l'on souhaite récupérer.
207 *
208 * \param xpath_before_index L'adresse avant indice.
209 * \param xpath_after_index L'adresse après indice.
210 * \param indexes Le tableau qui contiendra l'ensemble des indices trouvés
211 * (ce tableau n'est pas effacé avant utilisation).
212 */
213 void indexesInParam(const String& xpath_before_index, const String& xpath_after_index, UniqueArray<Integer>& indexes) const;
214
215 /*!
216 * \brief Méthode permettant de récupérer le ou les indices de l'option.
217 *
218 * L'adresse de l'option est reformée comme ceci :
219 * xpath_before_index[GET_INDEX]
220 *
221 * xpath_before_index doit être de la forme suivante :
222 * //case/aaa/bbb[2]/ccc
223 * - le "//case/" au début (ou "//cas/" en français"),
224 * - une succession de tags avec possiblement leurs indices,
225 * - pas de "/" à la fin,
226 * - un indice peut être mise à la fin (mais il sera remplacé
227 * par GET_INDEX).
228 *
229 * Si le paramètre allow_elems_after_index est activé, les adresses de la forme :
230 * xpath_before_index[GET_INDEX]/aaa/bbb
231 * seront aussi recherchées.
232 *
233 * Les indices sont des indices XML et ces indices commencent par 1.
234 * L'indice GET_INDEX est un indice spécial désignant les indices que l'on souhaite récupérer.
235 *
236 * \param xpath_before_index L'adresse avant indice.
237 * \param indexes Le tableau qui contiendra l'ensemble des indices trouvés
238 * \param allow_elems_after_index Doit-on vérifier la présence d'éléments après l'indice ?
239 * (ce tableau n'est pas effacé avant utilisation).
240 */
241 void indexesInParam(const String& xpath_before_index, UniqueArray<Integer>& indexes, bool allow_elems_after_index) const;
242
243 /*!
244 * \brief Méthode permettant de connaitre le nombre d'indices de l'option.
245 *
246 * L'adresse de l'option est reformée comme ceci :
247 * xpath_before_index[GET_INDEX]/xpath_after_index
248 *
249 * xpath_before_index doit être de la forme suivante :
250 * //case/aaa/bbb[2]/ccc
251 * - le "//case/" au début (ou "//cas/" en français"),
252 * - une succession de tags avec possiblement leurs indices,
253 * - pas de "/" à la fin,
254 * - un indice peut être mise à la fin (mais il sera remplacé
255 * par GET_INDEX).
256 *
257 * xpath_after_index doit être de la forme suivante :
258 * ddd/eee
259 * - pas de "/" au début ni à la fin.
260 *
261 * Les indices sont des indices XML et ces indices commencent par 1.
262 * L'indice GET_INDEX est un indice spécial désignant les indices que l'on souhaite récupérer.
263 *
264 * \param xpath_before_index L'adresse avant indice.
265 * \param xpath_after_index L'adresse après indice.
266 * \return Le nombre d'indices de l'option.
267 */
268 Integer count(const String& xpath_before_index, const String& xpath_after_index) const;
269
270 /*!
271 * \brief Méthode permettant de connaitre le nombre d'indices de l'option.
272 *
273 * L'adresse de l'option est reformée comme ceci :
274 * xpath_before_index[GET_INDEX]
275 *
276 * xpath_before_index doit être de la forme suivante :
277 * //case/aaa/bbb[2]/ccc
278 * - le "//case/" au début (ou "//cas/" en français"),
279 * - une succession de tags avec possiblement leurs indices,
280 * - pas de "/" à la fin,
281 * - un indice peut être mise à la fin (mais il sera remplacé
282 * par GET_INDEX).
283 *
284 * Les indices sont des indices XML et ces indices commencent par 1.
285 * L'indice GET_INDEX est un indice spécial désignant les indices que l'on souhaite récupérer.
286 *
287 * \param xpath_before_index L'adresse avant indice.
288 * \return Le nombre d'indices de l'option.
289 */
290 Integer count(const String& xpath_before_index) const;
291
292 private:
293
294 inline StringView _removeUselessPartInXpath(StringView xpath) const;
295
296 private:
297
298 bool m_is_fr;
299 ParameterOptionElementsCollection* m_lines;
300};
301
302/*---------------------------------------------------------------------------*/
303/*---------------------------------------------------------------------------*/
304
305} // End namespace Arcane
306
307/*---------------------------------------------------------------------------*/
308/*---------------------------------------------------------------------------*/
309
310#endif
Déclarations des types utilisés dans Arcane.
bool existAnyIndex(const String &xpath_before_index, const String &xpath_after_index) const
Méthode permettant de savoir si une option est présente.
void indexesInParam(const String &xpath_before_index, const String &xpath_after_index, UniqueArray< Integer > &indexes) const
Méthode permettant de récupérer le ou les indices de l'option.
Integer count(const String &xpath_before_index, const String &xpath_after_index) const
Méthode permettant de connaitre le nombre d'indices de l'option.
bool exist(const String &full_xpath) const
Méthode permettant de savoir si une option est présente.
String getParameterOrNull(const String &xpath_before_index, const String &xpath_after_index, Integer index) const
Méthode permettant de récupérer la valeur d'une option.
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.