Arcane  v3.14.10.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-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/* CaseOptionBase.h (C) 2000-2023 */
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
30class CaseOptionBuildInfo;
31class ICaseDocument;
32class ICaseDocumentFragment;
33class ICaseMng;
34class ICaseOptionList;
35class ISubDomain;
36class ICaseFunction;
37class CaseOptionBasePrivate;
38class ICaseDocumentVisitor;
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
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
81 ICaseOptionList* parentOptionList() const;
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.")
92 ICaseDocument* caseDocument() const;
93
94 //! Retourne le document associé à cette option
95 ICaseDocumentFragment* caseDocumentFragment() const;
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 /*! \brief Met à jour la valeur de l'option à partir d'une fonction.
113 *
114 * Si l'option n'est pas liée à une table de marche, ne fait rien.
115 * Sinon, utilise \a current_time ou \a current_iteration suivant
116 * le type de paramètre de la fonction pour calculer la nouvelle
117 * valeur de l'option. Cette valeur sera ensuite accessible normalement par
118 * la méthode operator().
119 */
120 virtual void updateFromFunction(Real current_time,Integer current_iteration) =0;
121
122 /*!
123 \brief Ajoute une traduction pour le nom de l'option.
124 *
125 Ajoute le nom \a name de l'option correspondant au langage \a lang.
126 Si une traduction existe déjà pour ce langage, elle est remplacée par
127 celle-ci.
128 */
129 void addAlternativeNodeName(const String& lang,const String& name);
130
131 //! Ajoute la valeur par défaut \a value à la catégorie \a category
132 void addDefaultValue(const String& category,const String& value);
133
134 //! Applique le visiteur sur cette option
135 virtual void visit(ICaseDocumentVisitor* visitor) const =0;
136
137 //! Lève une exception si l'option n'a pas été initialisée.
138 void checkIsInitialized() const { _checkIsInitialized(); }
139
140 protected:
141
142 //! Retourne la valeur par défaut de l'option ou 0 s'il n'y en a pas
143 String _defaultValue() const;
144
145 void _setDefaultValue(const String& def_value);
146
147 protected:
148
149 virtual void _search(bool is_phase1) =0;
150 void _setIsInitialized();
151 bool _isInitialized() const;
152 void _checkIsInitialized() const;
153 void _checkMinMaxOccurs(Integer nb_occur);
154 String _xpathFullName() const;
155
156 private:
157
158 CaseOptionBasePrivate* m_p; //!< Implémentation.
159
160 private:
161
162 void _setTranslatedName();
163 void _setCategoryDefaultValue();
164 /*! \brief Constructeur de copie.
165 *
166 * Le constructeur par copie est privée car l'option ne doit pas être
167 * copiée, notamment à cause du ICaseFunction qui est unique.
168 */
169 CaseOptionBase(const CaseOptionBase& from) = delete;
170 //! Opérateur de recopie
171 CaseOptionBase& operator=(const CaseOptionBase& from) = delete;
172};
173
174/*---------------------------------------------------------------------------*/
175/*---------------------------------------------------------------------------*/
176
177} // End namespace Arcane
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
181
182#endif
Classe de base d'une option du jeu de donnée.
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
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-