Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
CaseOptionBase.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/* CaseOptionBase.h (C) 2000-2025 */
9/* */
10/* Classe d'une base d'une option du jeu de donnés. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CASEOPTIONBASE_H
13#define ARCANE_CASEOPTIONBASE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
19#include "arcane/XmlNode.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
31class ICaseDocument;
33class ICaseMng;
34class ICaseOptionList;
35class ISubDomain;
36class ICaseFunction;
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
42/*!
43 * \brief Classe de base d'une option du jeu de donnée.
44 *
45 * \ingroup CaseOption
46 *
47 * Fait le lien entre l'option de nom \a m_name et le noeud du
48 * DOM correspondant.
49 */
50class ARCANE_CORE_EXPORT CaseOptionBase
51{
52 protected:
53
54 CaseOptionBase(const CaseOptionBuildInfo& cob);
55
56 public:
57
58 virtual ~CaseOptionBase();
59
60 public:
61
62 //! Retourne le vrai nom (non traduit) de l'option.
63 String trueName() const;
64
65 //! Retourne le nom de l'option correspondant au langage du jeu de données
66 String name() const;
67
68 //! Nom dans la langue \a lang de l'option. Retourne \a name() si pas de traduction.
69 String translatedName(const String& lang) const;
70
71 //! Récupère la valeur du fichier de configuration pour la variable
72 void search(bool is_phase1);
73
74 //! Imprime la valeur de l'option dans le langage \a lang,sur le flot \a o
75 virtual void print(const String& lang,std::ostream& o) const =0;
76
77 //! Gestionnaire de cas
78 ICaseMng* caseMng() const;
79
80 //! OptionList parent
82
83 //! Gestionnaire de traces
84 ITraceMng* traceMng() const;
85
86 //! Gestionnaire de sous-domaine
87 ARCCORE_DEPRECATED_2019("Do not use subDomain(). Try to get subDomain from an other way.")
88 ISubDomain* subDomain() const;
89
90 //! Retourne le gestionnaire de document
91 ARCANE_DEPRECATED_REASON("Y2023: use caseMng()->caseDocument() instead.")
93
94 //! Retourne le document associé à cette option
96
97 //! Positionne l'élément racine à \a root_element
98 void setRootElement(const XmlNode& root_element);
99
100 //! Retourne l'élément racine du DOM
101 XmlNode rootElement() const;
102
103 //! Retourne la fonction liée à cette option ou `nullptr` s'il n'y en a pas
104 virtual ICaseFunction* function() const =0;
105
106 //! Nombre minimum d'occurences (pour une option multiple)
107 Integer minOccurs() const;
108
109 //! Nombre maximum d'occurences (pour une option multiple) (-1 == unbounded)
110 Integer maxOccurs() const;
111
112 //! Permet de savoir si une option est optionnelle.
113 bool isOptional() const;
114
115 /*! \brief Met à jour la valeur de l'option à partir d'une fonction.
116 *
117 * Si l'option n'est pas liée à une table de marche, ne fait rien.
118 * Sinon, utilise \a current_time ou \a current_iteration suivant
119 * le type de paramètre de la fonction pour calculer la nouvelle
120 * valeur de l'option. Cette valeur sera ensuite accessible normalement par
121 * la méthode operator().
122 */
123 virtual void updateFromFunction(Real current_time,Integer current_iteration) =0;
124
125 /*!
126 \brief Ajoute une traduction pour le nom de l'option.
127 *
128 Ajoute le nom \a name de l'option correspondant au langage \a lang.
129 Si une traduction existe déjà pour ce langage, elle est remplacée par
130 celle-ci.
131 */
132 void addAlternativeNodeName(const String& lang,const String& name);
133
134 //! Ajoute la valeur par défaut \a value à la catégorie \a category
135 void addDefaultValue(const String& category,const String& value);
136
137 //! Applique le visiteur sur cette option
138 virtual void visit(ICaseDocumentVisitor* visitor) const =0;
139
140 //! Lève une exception si l'option n'a pas été initialisée.
141 void checkIsInitialized() const { _checkIsInitialized(); }
142
143 protected:
144
145 //! Retourne la valeur par défaut de l'option ou 0 s'il n'y en a pas
146 String _defaultValue() const;
147
148 void _setDefaultValue(const String& def_value);
149
150 protected:
151
152 virtual void _search(bool is_phase1) =0;
153 void _setIsInitialized();
154 bool _isInitialized() const;
155 void _checkIsInitialized() const;
156 void _checkMinMaxOccurs(Integer nb_occur);
157 String _xpathFullName() const;
158
159 private:
160
161 CaseOptionBasePrivate* m_p; //!< Implémentation.
162
163 private:
164
165 void _setTranslatedName();
166 void _setCategoryDefaultValue();
167 /*! \brief Constructeur de copie.
168 *
169 * Le constructeur par copie est privée car l'option ne doit pas être
170 * copiée, notamment à cause du ICaseFunction qui est unique.
171 */
172 CaseOptionBase(const CaseOptionBase& from) = delete;
173 //! Opérateur de recopie
174 CaseOptionBase& operator=(const CaseOptionBase& from) = delete;
175};
176
177/*---------------------------------------------------------------------------*/
178/*---------------------------------------------------------------------------*/
179
180} // End namespace Arcane
181
182/*---------------------------------------------------------------------------*/
183/*---------------------------------------------------------------------------*/
184
185#endif
Classe de base d'une option du jeu de donnée.
String name() const
Retourne le nom de l'option correspondant au langage du jeu de données.
String translatedName(const String &lang) const
Nom dans la langue lang de l'option. Retourne name() si pas de traduction.
void addDefaultValue(const String &category, const String &value)
Ajoute la valeur par défaut value à la catégorie category.
ICaseDocument * caseDocument() const
Retourne le gestionnaire de document.
virtual void visit(ICaseDocumentVisitor *visitor) const =0
Applique le visiteur sur cette option.
void search(bool is_phase1)
Récupère la valeur du fichier de configuration pour la variable.
void checkIsInitialized() const
Lève une exception si l'option n'a pas été initialisée.
ICaseMng * caseMng() const
Gestionnaire de cas.
ICaseDocumentFragment * caseDocumentFragment() const
Retourne le document associé à cette option.
void addAlternativeNodeName(const String &lang, const String &name)
Ajoute une traduction pour le nom de l'option.
void setRootElement(const XmlNode &root_element)
Positionne l'élément racine à root_element.
bool isOptional() const
Permet de savoir si une option est optionnelle.
Integer maxOccurs() const
Nombre maximum d'occurences (pour une option multiple) (-1 == unbounded)
XmlNode rootElement() const
Retourne l'élément racine du DOM.
virtual ICaseFunction * function() const =0
Retourne la fonction liée à cette option ou nullptr s'il n'y en a pas.
virtual void updateFromFunction(Real current_time, Integer current_iteration)=0
Met à jour la valeur de l'option à partir d'une fonction.
ITraceMng * traceMng() const
Gestionnaire de traces.
ISubDomain * subDomain() const
Gestionnaire de sous-domaine.
String trueName() const
Retourne le vrai nom (non traduit) de l'option.
ICaseOptionList * parentOptionList() const
OptionList parent.
Integer minOccurs() const
Nombre minimum d'occurences (pour une option multiple)
virtual void print(const String &lang, std::ostream &o) const =0
Imprime la valeur de l'option dans le langage lang,sur le flot o.
Interface du visiteur pour une option du jeu de données.
Interface du gestionnaire de cas.
Definition ICaseMng.h:56
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface du gestionnaire de traces.
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 -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.