14#include "arcane/core/CaseOptionExtended.h"
16#include "arcane/utils/ITraceMng.h"
17#include "arcane/utils/FatalErrorException.h"
18#include "arcane/utils/ApplicationInfo.h"
19#include "arcane/utils/CommandLineArguments.h"
20#include "arcane/utils/ParameterList.h"
21#include "arcane/utils/ParameterCaseOption.h"
22#include "arcane/utils/StringBuilder.h"
24#include "arcane/core/IApplication.h"
25#include "arcane/core/ICaseMng.h"
26#include "arcane/core/CaseOptionError.h"
27#include "arcane/core/ICaseDocumentVisitor.h"
28#include "arcane/core/XmlNodeList.h"
29#include "arcane/core/ICaseOptionList.h"
30#include "arcane/core/MeshHandle.h"
31#include "arcane/core/ICaseDocument.h"
32#include "arcane/core/CaseOptionException.h"
33#include "arcane/core/internal/StringVariableReplace.h"
62 pco.indexesInParam(full_xpath, option_in_param,
false);
65 Integer size = elem_list.size();
68 if (size == 0 && option_in_param.
empty() && is_optional) {
78 if (!option_in_param.
empty()) {
79 max_in_param = option_in_param[0];
80 for (
Integer index : option_in_param) {
81 if (index > max_in_param)
84 if (max_occurs >= 0) {
85 if (max_in_param > max_occurs) {
86 StringBuilder msg =
"Bad number of occurences in command line (greater than max)";
87 msg +=
" index_max_in_param=";
98 if (max_occurs >= 0) {
99 if (size > max_occurs) {
100 StringBuilder msg =
"Bad number of occurences (greater than max)";
103 msg +=
" max_occur=";
114 Integer final_size = std::max(size, std::max(min_occurs, max_in_param));
117 _allocate(final_size);
118 m_values.resize(final_size);
128 for (
Integer i = 0; i < final_size; ++i) {
132 if (option_in_param.
contains(i + 1)) {
133 str_val = pco.getParameterOrNull(full_xpath, i + 1,
false);
140 str_val = velem.
value();
145 if (str_val.
null()) {
150 str_val = StringVariableReplace::replaceWithCmdLineArgs(params, str_val,
true);
155 if (str_val.
null()) {
160 tm->
info(5) <<
"TryConvert opt=" << _xpathFullName() <<
" i=" << i
162 <<
" value=" << str_val;
163 bool is_bad = _tryToConvert(str_val,i);
170 m_values[i] = str_val;
184 for(
Integer i=0, s=_nbElem(); i<s; ++i )
185 o << m_values[i] <<
" ";
194 visitor->applyVisitor(
this);
209 if (_isInitialized()){
210 bool is_bad = _tryToConvert(def_value);
213 ARCANE_FATAL(
"Can not convert '{0}' to type '{1}' (option='{2}')",
220 _setDefaultValue(def_value);
236 CaseOptionSimple::_search(is_phase1);
243 bool has_valid_value =
true;
244 if (str_val.
null()) {
252 has_valid_value =
false;
254 _setHasValidValue(has_valid_value);
255 if (has_valid_value){
258 <<
" value=" << str_val;
259 bool is_bad = _tryToConvert(str_val);
278 _checkIsInitialized();
291 visitor->applyVisitor(
this);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
bool empty() const
Capacité (nombre d'éléments alloués) du vecteur.
bool contains(ConstReferenceType v) const
Vrai si le tableau contient l'élément de valeur v.
const CommandLineArguments & commandLineArguments() const
Arguments de la ligne de commande.
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.
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.
ITraceMng * traceMng() const
Gestionnaire de traces.
ICaseOptionList * parentOptionList() const
OptionList parent.
Integer minOccurs() const
Nombre minimum d'occurences (pour une option multiple)
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.
Exception en rapport avec le jeu de données.
void _search(bool is_phase1) override
Cherche la valeur de l'option dans le jeu de donnée.
void setDefaultValue(const String &def_value)
Positionne la valeur par défaut de l'option.
void print(const String &lang, std::ostream &o) const override
Imprime la valeur de l'option dans le langage lang,sur le flot o.
void visit(ICaseDocumentVisitor *visitor) const override
Applique le visiteur sur cette option.
void print(const String &lang, std::ostream &o) const override
Imprime la valeur de l'option dans le langage lang,sur le flot o.
void _search(bool is_phase1) override
Cherche la valeur de l'option dans le jeu de données.
void visit(ICaseDocumentVisitor *visitor) const override
Applique le visiteur sur cette option.
String xpathFullName() const
Nom complet au format donné par la norme XPath.
bool hasValidValue() const
Indique si l'option a une valeur invalide.
bool isOptional() const
Indique si l'option est facultative.
bool isPresent() const
Retourne true si l'option est présente.
const ParameterList & parameters() const
Liste des paramètres.
virtual const ApplicationInfo & applicationInfo() const =0
Informations sur l'exécutable.
Interface du visiteur pour une option du jeu de données.
virtual IApplication * application()=0
Application associée.
virtual MeshHandle meshHandle() const =0
Handle du maillage associé
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Classe représentant l'ensemble des paramètres pouvant modifier les options du jeu de données.
ParameterCaseOption getParameterCaseOption(const String &language) const
Méthode permettant de récupérer un objet de type ParameterCaseOption.
Constructeur de chaîne de caractère unicode.
String toString() const
Retourne la chaîne de caractères construite.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
Vecteur 1D de données avec sémantique par valeur (style STL).
Liste de noeuds d'un arbre DOM.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.