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)
95CaseOptionEnumValue(
const String& name,
int value)
104, m_value(
rhs.m_value)
109~CaseOptionEnumValue()
128 for(
auto i : (*m_enum_values) ){
168 for(
auto ev : (*m_enum_values) ){
185 for(
auto ev : (*m_enum_values) ){
186 if (
ev->value()==value){
200 for(
auto ev : (*m_enum_values) ){
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();
319 _checkIsInitialized();
325 switch(
func->paramType()){
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 ){
Tableau d'items de types quelconques.
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.
Informations pour construire une option de jeu de données.
Nom et valeur d'une énumération du jeu de données.
Ensemble des valeurs d'une énumération.
String nameOfValue(int value, const String &lang) const
Retourne le nom de correspondant à la valeur value pour le langage lang.
CaseOptionEnumValues()
Contruit l'instance.
void getValidNames(const String &lang, StringArray &names) const
Remplit names avec les noms valides pour la langue lang.
~CaseOptionEnumValues()
Libère les ressources.
EnumValueList * m_enum_values
Valeurs de l'énumération.
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.
String m_type_name
Nom de l'énumération.
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.
String m_type_name
Nom de l'énumération.
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
Nom d'une option du jeu de données. Cette classe permet de stocker le nom d'une option dans plusieurs...
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.
StringDictionary * m_translations
Traductions.
String m_true_name
Nom de l'option.
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.
Interface d'une fonction du jeu de données.
@ ParamUnknown
Type de paramètre inconnu.
@ ParamReal
Paramètre de type Real.
@ ParamInteger
Paramètre de type Integer.
virtual ITraceMng * traceMng()=0
Gestionnaire de traces.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Dictionnaire de chaînes unicode.
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.
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.