Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AxlOptionsBuilder.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* AxlOptionsBuilder.h (C) 2000-2023 */
9/* */
10/* Classes pour créer dynamiquement des options du jeu de données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_AXLOPTIONSBUILDER_H
13#define ARCANE_CORE_AXLOPTIONSBUILDER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
20
21#include <memory>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::AxlOptionsBuilder
27{
28class OneOption;
29class OneOptionImpl;
30class DocumentXmlWriter;
31class DocumentJSONWriter;
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
38class ARCANE_CORE_EXPORT OptionList
39{
40 friend OneOption;
41 friend OneOptionImpl;
42 friend DocumentXmlWriter;
43 friend DocumentJSONWriter;
44
45 public:
46
48 OptionList();
50 explicit OptionList(const std::initializer_list<OneOption>& options);
51
52 public:
53
54 OptionList& add(const String& name, const OptionList& option);
55 OptionList& add(const OneOption& opt);
56 OptionList& add(const std::initializer_list<OneOption>& options);
57
58 public:
59
60 OptionList clone() const;
61
62 private:
63
64 std::shared_ptr<OneOptionImpl> m_p;
65};
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
72class ARCANE_CORE_EXPORT OneOption
73{
74 friend class OptionList;
75 friend class OneOptionImpl;
76 friend DocumentXmlWriter;
77 friend DocumentJSONWriter;
78
79 protected:
80
81 enum class Type
82 {
83 CO_Simple,
84 CO_Enumeration,
85 CO_Extended,
86 CO_Complex,
87 CO_ServiceInstance
88 };
89
90 public:
91
92 OneOption() = default;
93
94 protected:
95
96 OneOption(Type type, const String& name, const String& value)
97 : m_type(type)
98 , m_name(name)
99 , m_value(value)
100 {}
101 OneOption(Type type, const String& name, const OptionList& option);
102
103 protected:
104
105 Type m_type = Type::CO_Simple;
106 String m_name;
109 String m_function_name; //<! Nom de la fonction (ICaseFunction)
110 std::shared_ptr<OneOptionImpl> m_sub_option;
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
118class ARCANE_CORE_EXPORT Simple
119: public OneOption
120{
121 public:
122
123 Simple(const String& name, Int32 value)
124 : OneOption(Type::CO_Simple, name, String::fromNumber(value))
125 {}
126
127 Simple(const String& name, Int64 value)
128 : OneOption(Type::CO_Simple, name, String::fromNumber(value))
129 {
130 }
131
132 Simple(const String& name, Real value)
133 : OneOption(Type::CO_Simple, name, String::fromNumber(value))
134 {
135 }
136
137 Simple(const String& name, const String& value)
138 : OneOption(Type::CO_Simple, name, value)
139 {
140 }
141
142 public:
143
144 Simple& addFunction(const String& func_name)
145 {
146 m_function_name = func_name;
147 return (*this);
148 }
149};
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
156class ARCANE_CORE_EXPORT Enumeration
157: public OneOption
158{
159 public:
160
161 Enumeration(const String& name, const String& value)
162 : OneOption(Type::CO_Enumeration, name, value)
163 {
164 }
165};
166
167/*---------------------------------------------------------------------------*/
168/*---------------------------------------------------------------------------*/
172class ARCANE_CORE_EXPORT Extended
173: public OneOption
174{
175 public:
176
177 Extended(const String& name, const String& value)
178 : OneOption(Type::CO_Extended, name, value)
179 {
180 }
181};
182
183/*---------------------------------------------------------------------------*/
184/*---------------------------------------------------------------------------*/
188class ARCANE_CORE_EXPORT Complex
189: public OneOption
190{
191 public:
192
193 Complex(const String& name, const std::initializer_list<OneOption>& options);
194 Complex(const String& name, const OptionList& option);
195};
196
197/*---------------------------------------------------------------------------*/
198/*---------------------------------------------------------------------------*/
202class ARCANE_CORE_EXPORT ServiceInstance
203: public OneOption
204{
205 public:
206
208 const std::initializer_list<OneOption>& options);
210 const OptionList& options);
212};
213
214/*---------------------------------------------------------------------------*/
215/*---------------------------------------------------------------------------*/
216
220class ARCANE_CORE_EXPORT Document
221{
222 friend DocumentXmlWriter;
223 friend DocumentJSONWriter;
224
225 public:
226
227 Document(const String& lang, const OptionList& options)
228 : m_language(lang)
229 , m_options(options)
230 {}
231
232 public:
233
234 const String& language() const { return m_language; }
235
236 private:
237
238 String m_language;
239 OptionList m_options;
240};
241
242/*---------------------------------------------------------------------------*/
243/*---------------------------------------------------------------------------*/
244
245} // namespace Arcane::AxlOptionsBuilder
246
247/*---------------------------------------------------------------------------*/
248/*---------------------------------------------------------------------------*/
249
250#endif
Déclarations des types généraux de Arcane.
Option 'Complex' du jeu de données.
Écrivain au format JSON pour un jeu de données.
Écrivain au format XML pour un jeu de données.
Option 'ServiceInstance' du jeu de données.
Option 'Enumeration' du jeu de données.
Option 'Extended' du jeu de données.
Classe de base d'une option dynamique.
String m_service_name
Valeur de l'option (si option CO_Simple)
Liste d'options du jeu de données.
Option 'ServiceInstance' du jeu de données.
Option 'Simple' du jeu de données.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Chaîne de caractères unicode.
GenericDocument< UTF8<> > Document
GenericDocument with UTF8 encoding.
Definition document.h:2537