Arcane  v3.16.0.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-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/* CaseOptions.h (C) 2000-2025 */
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.
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
83 //! Construit un jeu d'options.
85
86 private:
87
88 friend class ServiceBuilderWithOptionsBase;
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 friend class CaseOptionMultiServiceImpl;
190
191 void _setTranslatedName();
192 bool _setMeshHandleAndCheckDisabled(const String& mesh_name);
193
194 protected:
195
196 CaseOptionsPrivate* m_p; //!< Implémentation
197
198 private:
199
200 void _setMeshHandle(const MeshHandle& handle);
201 void _setParent(ICaseOptionList* parent);
202};
203
204/*---------------------------------------------------------------------------*/
205/*---------------------------------------------------------------------------*/
206
207} // End namespace Arcane
208
209/*---------------------------------------------------------------------------*/
210/*---------------------------------------------------------------------------*/
211
212#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.
String rootTagName() const override
Retourne le nom de l'élément dans le langage du jeu de données.
String rootTagTrueName() const override
Retourne le vrai nom (non traduit) de l'élément.
virtual String trueName() const
Retourne le vrai nom (non traduit) de l'élément.
String translatedName(const String &lang) const override
Nom dans la langue lang de l'option. Retourne rootTagTrueName() si pas de traduction.
virtual String name() const
Retourne le nom de l'élément dans le langage du jeu de données.
CaseOptionsPrivate * m_p
Implémentation.
CaseOptions(ICaseMng *cm, const String &name)
Construit un jeu d'options.
Interface du gestionnaire de cas.
Definition ICaseMng.h:56
Gestionnaire d'un document DOM.
Handle sur un maillage.
Definition MeshHandle.h:47
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.
Noeud d'un arbre DOM.
Definition XmlNode.h:51
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eCaseOptionReadPhase
Phases de la lecture.