14#include "arcane/core/CaseOptionEnum.h"
16#include "arcane/utils/Array.h"
17#include "arcane/utils/ITraceMng.h"
19#include "arcane/core/ICaseFunction.h"
20#include "arcane/core/ICaseMng.h"
21#include "arcane/core/ICaseDocument.h"
22#include "arcane/core/StringDictionary.h"
23#include "arcane/core/CaseOptionError.h"
24#include "arcane/core/ICaseDocumentVisitor.h"
47: m_true_name(rhs.m_true_name)
50 if (rhs.m_translations)
60 delete m_translations;
71 m_translations->add(lang,
name);
80 if (!m_translations || lang.
null())
82 String s = m_translations->find(lang);
95CaseOptionEnumValue(
const String& name,
int value)
102CaseOptionEnumValue(
const CaseOptionEnumValue& rhs)
104, m_value(rhs.m_value)
109~CaseOptionEnumValue()
128 for(
auto i : (*m_enum_values) ){
131 delete m_enum_values;
141 return (*m_enum_values)[index];
153 m_enum_values->add(svalue);
159 return m_enum_values->size();
168 for(
auto ev : (*m_enum_values) ){
169 const String& n = ev->name(lang);
185 for(
auto ev : (*m_enum_values) ){
186 if (ev->value()==value){
200 for(
auto ev : (*m_enum_values) ){
201 names.
add(ev->name(lang));
214, m_type_name(type_name)
225 delete m_enum_values;
232_search(
bool is_phase1)
234 CaseOptionSimple::_search(is_phase1);
237 bool is_default = _element().null();
238 String str_val = (is_default) ?
_defaultValue() : _element().value();
239 bool has_valid_value =
true;
240 if (str_val.null()) {
248 has_valid_value =
false;
251 _setHasValidValue(has_valid_value);
253 if (has_valid_value){
260 bool is_bad = m_enum_values->valueOfName(str_val,lang,value);
264 m_enum_values->getValidNames(lang,valid_values);
279_setEnumDefaultValue(
int def_value)
286 if (_isInitialized())
290 _setDefaultValue(m_enum_values->nameOfValue(def_value,String()));
299 _checkIsInitialized();
301 o <<
"'" << m_enum_values->nameOfValue(v,lang) <<
"' (" << v <<
")";
310 visitor->applyVisitor(
this);
317_updateFromFunction(
Real current_time,
Integer current_iteration)
319 _checkIsInitialized();
327 new_str = _convertFunctionRealToString(func,current_time);
330 new_str = _convertFunctionIntegerToString(func,current_iteration);
336 bool is_bad = m_enum_values->
valueOfName(new_str,lang,new_value);
345 msg->
debug() <<
"New value for enum option <" <<
name() <<
"> " << new_value;
346 bool has_changed = new_value!=current_value;
347 _setChangedSinceLastIteration(has_changed);
361, m_type_name(type_name)
370~CaseOptionMultiEnum()
372 delete m_enum_values;
378void CaseOptionMultiEnum::
379_search(
bool is_phase1)
383 Integer size = elem_list.size();
384 _checkMinMaxOccurs(size);
393 for(
Integer index=0; index<size; ++index ){
394 XmlNode velem = elem_list[index];
397 String str_val = (velem.null()) ?
_defaultValue() : velem.value();
398 if (str_val.null()) {
399 CaseOptionError::addOptionNotFoundError(caseDocumentFragment(),A_FUNCINFO,
400 name(),rootElement());
406 bool is_bad = m_enum_values->valueOfName(str_val,lang,value);
410 m_enum_values->getValidNames(lang,valid_values);
430 o <<
"'" << m_enum_values->nameOfValue(v,lang) <<
"' (" << v <<
")";
440 visitor->applyVisitor(
this);
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
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 _defaultValue() const
Retourne la valeur par défaut de l'option ou 0 s'il n'y en a pas.
ICaseMng * caseMng() const
Gestionnaire de cas.
ICaseDocumentFragment * caseDocumentFragment() const
Retourne le document associé à cette option.
XmlNode rootElement() const
Retourne l'élément racine du DOM.
String nameOfValue(int value, const String &lang) const
Retourne le nom de correspondant à la valeur value pour le langage lang.
CaseOptionEnumValues()
Contruit l'instance.
UniqueArray< CaseOptionEnumValue * > EnumValueList
Type de la liste des valeurs.
void getValidNames(const String &lang, StringArray &names) const
Remplit names avec les noms valides pour la langue lang.
~CaseOptionEnumValues()
Libère les ressources.
bool valueOfName(const String &name, const String &lang, int &value) const
Retourne la valeur de l'énumération ayant le nom name.
Integer nbEnumValue() const
Retourne le nombre de valeurs de l'énumération.
CaseOptionEnumValue * enumValue(Integer index) const
Retourne la ième valeur.
void addEnumValue(CaseOptionEnumValue *value, bool do_clone)
Ajoute la valeur d'énumération value. L'instance devient propriétaire de value qui est détruite lorsq...
virtual void print(const String &lang, std::ostream &o) const
Imprime la valeur de l'option dans le langage lang,sur le flot o.
virtual void _setOptionValue(int v)=0
Positionne à v la valeur de l'option.
virtual int _optionValue() const =0
Retourne la valeur de l'option.
virtual void visit(ICaseDocumentVisitor *visitor) const
Applique le visiteur sur cette option.
static void addInvalidTypeError(ICaseDocumentFragment *document, const TraceInfo &where, const String &node_name, const XmlNode &parent, const String &value, const String &expected_type)
Erreur lorsqu'une valeur d'une jeu de données n'est pas du bon type. Cette erreur est collective.
static void addOptionNotFoundError(ICaseDocumentFragment *document, const TraceInfo &where, const String &node_name, const XmlNode &parent)
Erreur lorsqu'une option du jeu de données n'est pas trouvée. Cette erreur est collective.
virtual void visit(ICaseDocumentVisitor *visitor) const
Applique le visiteur sur cette option.
virtual Integer _nbElem() const =0
Retourne le nombre d'éléments du tableau.
virtual void print(const String &lang, std::ostream &o) const
Imprime la valeur de l'option dans le langage lang,sur le flot o.
virtual void _allocate(Integer size)=0
Alloue un tableau pour size éléments.
virtual int _optionValue(Integer index) const =0
Retourne la valeur de l'énumération pour l'indice index.
virtual void _setOptionValue(Integer index, int v)=0
String name(const String &lang) const
retourne le nom de l'option dans le langage lang. Si aucune traduction n'est disponible dans le langa...
virtual ~CaseOptionName()
Libère les ressources.
CaseOptionName(const String &true_name)
Construit une option de nom true_name.
void addAlternativeNodeName(const String &lang, const String &tname)
Ajoute une traduction pour le nom de l'option. Ajoute le nom tname correspondant au langage lang....
Classe de base des options simples (uniquement une valeur).
ICaseFunction * function() const override
Fonction associée à cette option (0 si aucune).
bool isOptional() const
Indique si l'option est facultative.
bool isPresent() const
Retourne true si l'option est présente.
virtual String language() const =0
Langage utilisé dans le jeu de données.
Interface du visiteur pour une option du jeu de données.
@ ParamUnknown
Type de paramètre inconnu.
@ ParamReal
Paramètre de type Real.
@ ParamInteger
Paramètre de type Integer.
virtual eParamType paramType() const =0
Type du paramètre de la fonction.
virtual ITraceMng * traceMng()=0
Gestionnaire de traces.
Interface du gestionnaire de traces.
virtual TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium)=0
Flot pour un message de debug.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
XmlNodeList children(const String &name) const
Ensemble des noeuds fils de ce noeud ayant pour nom name.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Array< String > StringArray
Tableau dynamique à une dimension de chaînes de caractères.
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.