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;
80 if (!m_translations || lang.
null())
95CaseOptionEnumValue(
const String& name,
int value)
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();
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);
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);
359CaseOptionMultiEnum(
const CaseOptionBuildInfo& cob,
const String& type_name)
361, m_type_name(type_name)
362, m_enum_values(new CaseOptionEnumValues())
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()) {
406 bool is_bad = m_enum_values->
valueOfName(str_val,lang,value);
428 for( Integer i=0, s=
_nbElem(); i<s; ++i ){
430 o <<
"'" << m_enum_values->
nameOfValue(v,lang) <<
"' (" << v <<
")";
440 visitor->applyVisitor(
this);
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.
void add(const String &key, const String &value)
Ajoute le couple (key,value) au dictionnaire.
String find(const String &key, bool throw_exception=false) const
Retourne la valeur associée à key.
String value() const
Valeur du noeud.
XmlNodeList children(const String &name) const
Ensemble des noeuds fils de ce noeud ayant pour nom name.
bool null() const
Vrai si le noeud est nul.
Classe de base des vecteurs 1D de données.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
Int32 Integer
Type représentant un entier.