14#include "arcane/core/CaseOptions.h"
16#include "arcane/utils/ITraceMng.h"
17#include "arcane/utils/FatalErrorException.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/CaseNodeNames.h"
24#include "arcane/core/CaseOptionError.h"
25#include "arcane/core/ICaseDocumentVisitor.h"
26#include "arcane/core/MeshHandle.h"
27#include "arcane/core/IMeshMng.h"
28#include "arcane/core/IXmlDocumentHolder.h"
29#include "arcane/core/internal/ICaseMngInternal.h"
30#include "arcane/core/internal/ICaseOptionListInternal.h"
32#include "arcane/core/CaseOptionsMulti.h"
43namespace AxlOptionsBuilder
45extern "C++" IXmlDocumentHolder*
63 : m_case_mng(
cm), m_name(name), m_true_name(name)
64 , m_mesh_handle(
cm->meshMng()->defaultMeshHandle())
69 : m_case_mng(
co_list->caseMng()), m_name(name), m_true_name(name),
70 m_mesh_handle(
co_list->meshHandle())
72 if (m_mesh_handle.
isNull())
73 m_mesh_handle = m_case_mng->
meshMng()->defaultMeshHandle();
78 delete m_own_case_document_fragment;
90 bool m_is_multi =
false;
91 bool m_is_translated_name_set =
false;
92 bool m_is_phase1_read =
false;
95 bool m_is_case_mng_registered =
false;
109 m_p->m_config_list = ICaseOptionListInternal::create(
cm,
this,
XmlNode());
110 m_p->m_is_case_mng_registered =
true;
111 cm->registerOptions(
this);
121 m_p->m_config_list = ICaseOptionListInternal::create(parent,
this,
XmlNode());
133 m_p->m_is_case_mng_registered =
true;
134 cm->registerOptions(
this);
149 _setTranslatedName();
160 m_p->m_is_case_mng_registered =
true;
161 cm->registerOptions(
this);
187 m_p->m_own_case_document_fragment =
cm->_internalImpl()->createDocumentFragment(
xml_doc);
190 m_p->m_case_mng_ref =
cm->toReference();
200 if (
m_p->m_is_case_mng_registered)
216 m_p->m_parent =
nullptr;
217 m_p->m_config_list =
nullptr;
226 return m_p->m_true_name;
244 return m_p->m_config_list->isPresent();
253 return m_p->m_config_list->xpathFullName();
267 if (
m_p->m_is_translated_name_set)
278 return m_p->m_config_list.get();
284const ICaseOptionList* CaseOptions::
287 return m_p->m_config_list.get();
332 return m_p->m_case_mng;
338ITraceMng* CaseOptions::
359 return m_p->m_mesh_handle;
368 return meshHandle().
mesh();
374ICaseDocument* CaseOptions::
383ICaseDocumentFragment* CaseOptions::
384caseDocumentFragment()
const
386 auto* x =
m_p->m_own_case_document_fragment;
396_setMeshHandle(
const MeshHandle& handle)
398 traceMng()->
info(5) <<
"SetMeshHandle for " <<
m_p->m_name <<
" mesh_name=" << handle.meshName();
399 m_p->m_mesh_handle = handle;
406_setParent(ICaseOptionList* parent)
408 parent->addChild(
this);
409 m_p->m_parent = parent;
410 _setMeshHandle(parent->meshHandle());
446 m_p->m_config_list->disable();
449 _setMeshHandle(*handle);
461 if (
m_p->m_is_translated_name_set)
462 traceMng()->
info() <<
"WARNING: translated name already set for " <<
m_p->m_name;
464 m_p->m_name =
m_p->m_true_name;
471 m_p->m_is_translated_name_set =
true;
485 return m_p->m_true_name;
509 _setTranslatedName();
523 String::format(
"No function with the name '{0}' exists",
528 String::format(
"The function '{0}' requires a parameter of type 'time'",
533 String::format(
"The function '{0}' requires a parameter of type 'bool'",
538 tm->
info() <<
"Use the function '" <<
func->name() <<
"' to activate the option "
539 <<
velem.xpathFullName();
545 if (!func_name.
null())
547 String::format(
"Attribute <{0}> invalid.",
550 m_p->m_is_phase1_read =
true;
561 m_p->m_config_list->_internalApi()->addInvalidChildren(
nlist);
570 m_p->m_config_list->printChildren(
lang,indent);
588 m_p->m_config_list->deepGetChildren(
col);
609Ref<ICaseOptions> CaseOptions::
612 return makeRef<ICaseOptions>(
this);
622CaseOptionsMulti(ICaseMng* cm,
const String& aname,
const XmlNode& parent_element,
623 Integer min_occurs,Integer max_occurs)
624: CaseOptions(cm,aname,
625 ICaseOptionListInternal::create(this,this,cm,parent_element,
626 min_occurs,max_occurs))
634CaseOptionsMulti(ICaseOptionList* parent,
const String& aname,
635 const XmlNode& parent_element,
636 Integer min_occurs,Integer max_occurs)
637: CaseOptions(parent,aname,
638 ICaseOptionListInternal::create(this,this,parent,
639 parent_element,min_occurs,max_occurs))
649extern "C++" ARCANE_CORE_EXPORT ISubDomain*
650_arcaneDeprecatedGetSubDomain(ICaseOptions* opt)
652 return opt->subDomain();
Option 'ServiceInstance' du jeu de données.
Noms des noeuds XML d'un jeu de données Arcane.
static void addError(ICaseDocumentFragment *document, const TraceInfo &where, const String &node_name, const String &message, bool is_collective=false)
Erreur générique.
IModule * m_module
Module associé ou 0 s'il n'y en a pas.
ICaseFunction * m_activate_function
Fonction indiquand l'état d'activation.
IServiceInfo * m_service_info
Service associé ou 0 s'il n'y en a pas.
Classe de base d'une liste d'options du jeu de données.
String xpathFullName() const override
Nom complet au format XPath correspondant à rootElement()
void addInvalidChildren(XmlNodeList &) override
Ajoute à nlist les éléments non reconnus.
bool isPresent() const override
Vrai si l'option est présente dans le fichier, faux s'il s'agit de la valeur par défaut.
bool _setMeshHandleAndCheckDisabled(const String &mesh_name)
Positionne le maillage associé à cette option.
void setCaseServiceInfo(IServiceInfo *m) override
Associe le service m à ce jeu de données.
void visit(ICaseDocumentVisitor *visitor) const override
Applique le visiteur sur cette option.
void addAlternativeNodeName(const String &lang, const String &name) override
Ajoute une traduction pour le nom de l'option. Ajoute le nom name de l'option correspondant au langag...
String rootTagName() const override
Retourne le nom de l'élément dans le langage du jeu de données.
String rootTagTrueName() const override
Retourne le vrai nom (non traduit) de l'élément.
ICaseFunction * activateFunction() override
Fonction indiquant l'état d'activation de l'option.
void setCaseModule(IModule *m) override
Associe le module m à ce jeu de données.
String translatedName(const String &lang) const override
Nom dans la langue lang de l'option. Retourne rootTagTrueName() si pas de traduction.
virtual String name() const
Retourne le nom de l'élément dans le langage du jeu de données.
~CaseOptions() override
Libère les ressources.
IServiceInfo * caseServiceInfo() const override
Retourne le service associé ou 0 s'il n'y en a pas.
IModule * caseModule() const override
Retourne le module associé ou 0 s'il n'y en a pas.
CaseOptionsPrivate * m_p
Implémentation.
ISubDomain * subDomain() const override
Sous-domain associé.
void deepGetChildren(Array< CaseOptionBase * > &col) override
Ajoute à la liste col tous les options filles.
CaseOptions(ICaseMng *cm, const String &name)
Construit un jeu d'options.
Interface d'une partie d'un jeu de données.
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.
@ ParamReal
Paramètre de type Real.
@ ValueBool
Valeur de type entière.
Interface du gestionnaire de cas.
virtual IMeshMng * meshMng() const =0
Gestionnaire de maillage associé
virtual ITraceMng * traceMng()=0
Gestionnaire de traces.
virtual ISubDomain * subDomain()=0
Gestionnaire de sous-domaine.
virtual ICaseDocumentFragment * caseDocumentFragment()=0
Fragment du Document XML associé au jeu de données (peut être nul si pas de jeu de donneés)
virtual void unregisterOptions(ICaseOptions *)=0
Déseregistre une liste d'options du jeu de donnée.
virtual ICaseDocument * caseDocument()=0
Document XML du jeu de données (peut être nul si pas de jeu de donneés)
virtual ICaseFunction * findFunction(const String &name) const =0
Retourne la fonction de nom name ou nullptr s'il n'y en a pas.
Interface d'une liste d'options du jeu de données.
virtual MeshHandle meshHandle() const =0
Handle du maillage associé
virtual void removeChild(ICaseOptions *co)=0
Supprime co de la liste des fils.
Interface des informations d'un service ou d'un module.
Interface du gestionnaire d'un sous-domaine.
Gestionnaire d'un document DOM.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
bool isNull() const
Indique si le handle est nul (il ne référence aucun maillage existant ou non)
IMesh * mesh() const
Maillage associé.
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.
Liste de noeuds d'un arbre DOM.
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
TraceMessage info() const
Flot pour un message d'information.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eCaseOptionReadPhase
Phases de la lecture.