Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
CaseOptions.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/* CaseOptions.h (C) 2000-2023 */
9/* */
10/* Options du jeu de données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CASEOPTIONS_H
13#define ARCANE_CASEOPTIONS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/utils/Array.h"
20#include "arcane/utils/String.h"
21#include "arcane/utils/Ref.h"
22
23#include "arcane/core/XmlNode.h"
24#include "arcane/core/ICaseOptions.h"
25#include "arcane/core/ICaseOptionList.h"
26
27// Ces fichiers ne sont pas nécessaires pour ce '.h' mais on les ajoute
28// car axlstar inclus uniquement 'CaseOptions.h'
29#include "arcane/core/CaseOptionSimple.h"
30#include "arcane/core/CaseOptionEnum.h"
31#include "arcane/core/CaseOptionExtended.h"
32#include "arcane/core/CaseOptionComplexValue.h"
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
37namespace Arcane
38{
39namespace AxlOptionsBuilder
40{
41class Document;
42}
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
46/*!
47 * \internal
48 * \brief Classe de base d'une liste d'options du jeu de données.
49 *
50 * Les instances de cette classe doivent toutes être allouées par
51 * l'opérateur new() et ne doivent pas être détruite, le gestionnaire
52 * de cas (ICaseMng) s'en chargeant.
53 */
54class ARCANE_CORE_EXPORT CaseOptions
56, public ICaseOptions
57{
59
60 private:
61
62 struct XmlContent
63 {
64 String m_xml_content;
65 IXmlDocumentHolder* m_document = nullptr;
66 };
67
68 public:
69
70 //! Construit un jeu d'options.
71 CaseOptions(ICaseMng* cm, const String& name);
72 //! Construit un jeu d'options.
73 CaseOptions(ICaseOptionList*, const String& name);
74 //! Construit un jeu d'options.
75 CaseOptions(ICaseMng* cm, const String& name, const XmlNode& parent);
76 //! Construit un jeu d'options.
77 CaseOptions(ICaseOptionList*, const String& name, const XmlNode& parent, bool is_optional = false, bool is_multi = false);
78 //! Construit un jeu d'options.
79
80 protected:
81
82 CaseOptions(ICaseMng*, const String& name, ICaseOptionList* parent);
83 //! Construit un jeu d'options.
84 CaseOptions(ICaseOptionList*, const String& name, ICaseOptionList* parent);
85
86 private:
87
89
90 // Uniquement pour ServiceBuilderWithOptionsBase
91 static ReferenceCounter<ICaseOptions> createDynamic(ICaseMng* cm, const AxlOptionsBuilder::Document& options_doc);
92
93 //! \internal
94 CaseOptions(ICaseMng*, const XmlContent& xm_content);
95
96 public:
97
98 //! Libère les ressources
99 ~CaseOptions() override;
100
101 private:
102
103 CaseOptions(const CaseOptions& rhs) = delete;
104 CaseOptions& operator=(const CaseOptions& rhs) = delete;
105
106 public:
107
108 //! Retourne le vrai nom (non traduit) de l'élément.
109 String rootTagTrueName() const override;
110
111 //! Retourne le nom de l'élément dans le langage du jeu de données.
112 String rootTagName() const override;
113
114 //! Nom dans la langue \a lang de l'option. Retourne \a rootTagTrueName() si pas de traduction.
115 String translatedName(const String& lang) const override;
116
117 //! Retourne le vrai nom (non traduit) de l'élément.
118 virtual String trueName() const { return rootTagTrueName(); }
119
120 //! Retourne le nom de l'élément dans le langage du jeu de données.
121 virtual String name() const { return rootTagName(); }
122
123 void read(bool is_phase1) override
124 {
125 auto p = (is_phase1) ? eCaseOptionReadPhase::Phase1 : eCaseOptionReadPhase::Phase2;
126 read(p);
127 }
128
129 void read(eCaseOptionReadPhase phase) override;
130
131 void addInvalidChildren(XmlNodeList&) override;
132
133 void printChildren(const String& lang, int indent) override;
134
135 //! Retourne le service associé ou 0 s'il n'y en a pas.
136 IServiceInfo* caseServiceInfo() const override;
137
138 //! Retourne le module associé ou 0 s'il n'y en a pas.
139 IModule* caseModule() const override;
140
141 //! Associe le service \a m à ce jeu de données.
142 void setCaseServiceInfo(IServiceInfo* m) override;
143
144 //! Associe le module \a m à ce jeu de données.
145 void setCaseModule(IModule* m) override;
146
147 //! Ajoute à la liste \a col tous les options filles.
148 void deepGetChildren(Array<CaseOptionBase*>& col) override;
149
150 ICaseOptionList* configList() override;
151
152 const ICaseOptionList* configList() const override;
153
154 //! Fonction indiquant l'état d'activation de l'option
155 ICaseFunction* activateFunction() override;
156
157 /*!
158 \brief Vrai si l'option est présente dans le fichier,
159 faux s'il s'agit de la valeur par défaut.
160 */
161 bool isPresent() const override;
162
163 /*!
164 \brief Ajoute une traduction pour le nom de l'option.
165 Ajoute le nom \a name de l'option correspondant au langage \a lang.
166 Si une traduction existe déjà pour ce langage, elle est remplacée par
167 celle-ci.
168 */
169 void addAlternativeNodeName(const String& lang, const String& name) override;
170
171 ICaseMng* caseMng() const override;
172 ITraceMng* traceMng() const override;
173 ISubDomain* subDomain() const override;
174 IMesh* mesh() const override;
175 MeshHandle meshHandle() const override;
176 ICaseDocument* caseDocument() const override;
177 ICaseDocumentFragment* caseDocumentFragment() const override;
178
179 void detach() override;
180
181 void visit(ICaseDocumentVisitor* visitor) const override;
182
183 String xpathFullName() const override;
184
185 Ref<ICaseOptions> toReference() override;
186
187 protected:
188
189 void _setTranslatedName();
190 bool _setMeshHandleAndCheckDisabled(const String& mesh_name);
191
192 protected:
193
194 CaseOptionsPrivate* m_p; //!< Implémentation
195
196 private:
197
198 void _setMeshHandle(const MeshHandle& handle);
199 void _setParent(ICaseOptionList* parent);
200};
201
202/*---------------------------------------------------------------------------*/
203/*---------------------------------------------------------------------------*/
204
205} // End namespace Arcane
206
207/*---------------------------------------------------------------------------*/
208/*---------------------------------------------------------------------------*/
209
210#endif
#define ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour définir les méthodes gérant les compteurs de référence.
Option 'ServiceInstance' du jeu de données.
virtual String trueName() const
Retourne le vrai nom (non traduit) de l'élément.
virtual String name() const
Retourne le nom de l'élément dans le langage du jeu de données.
CaseOptionsPrivate * m_p
Implémentation.
Interface du gestionnaire de cas.
Definition ICaseMng.h:56
Gestionnaire d'un document DOM.
Handle sur un maillage.
Definition MeshHandle.h:47
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Implémentation thread-safe d'un compteur de référence.
Encapsulation d'un pointeur avec compteur de référence.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eCaseOptionReadPhase
Phases de la lecture.