14#include "arcane/utils/Collection.h"
15#include "arcane/utils/Enumerator.h"
16#include "arcane/utils/OStringStream.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/ScopedPtr.h"
20#include "arcane/impl/CaseDocumentLangTranslator.h"
22#include "arcane/AbstractCaseDocumentVisitor.h"
23#include "arcane/CaseOptions.h"
24#include "arcane/CaseOptionService.h"
25#include "arcane/ICaseMng.h"
26#include "arcane/ICaseDocument.h"
27#include "arcane/CaseNodeNames.h"
51 info() <<
"BeginOpt " << _getName(
opt) <<
" {";
55 info() <<
"EndOptList " <<
opt->rootTagName() <<
" }";
59 info() <<
"SimpleOpt " << _getName(
opt);
63 info() <<
"MultiSimple " << _getName(
opt);
67 info() <<
"MultiExtended " << _getName(
opt);
71 info() <<
"Extended " << _getName(
opt);
75 info() <<
"MultiEnum " << _getName(
opt);
76 info() <<
"WARNING: MultiEnum not handled in translator";
80 info() <<
"Enum " << _getName(
opt);
85 info() <<
"BeginService " << _getName(
opt);
89 info() <<
"EndService " << _getName(
opt);
93 info() <<
"BeginMultiService " << _getName(
opt) <<
" index=" << index;
97 info() <<
"EndMultiService " << _getName(
opt) <<
" index=" << index;
123 if (!
opt->isPresent())
125 if (!
opt->hasValidValue())
128 int v =
opt->enumValueAsInt();
130 m_stream() <<
opt->xpathFullName() <<
":text#" <<
new_name <<
'\n';
135 info() <<
"ALL: " << m_stream.str();
138 String convertString() {
return m_stream.str(); }
147CaseDocumentLangTranslator::
156CaseDocumentLangTranslator::
157~CaseDocumentLangTranslator()
164void CaseDocumentLangTranslator::
172String CaseDocumentLangTranslator::
173translate(ICaseMng* cm,
const String& new_lang)
176 throw ArgumentException(A_FUNCINFO,
"Invalid value for langage");
177 CaseDocumentLangTranslatorVisitor my_visitor(
traceMng(),new_lang);
180 ICaseOptions* o = *i;
181 info() <<
" OptName=" << o->rootTagName();
182 o->visit(&my_visitor);
184 my_visitor.printAll();
186 ICaseDocument* cd = cm->caseDocument();
187 CaseNodeNames* current_cnn = cd->caseNodeNames();
188 ScopedPtrT<CaseNodeNames> cnn {
new CaseNodeNames(new_lang) };
193 _addConvert(cd->fragment()->rootElement(),cnn->root);
194 _addConvert(cd->timeloopElement(),cnn->timeloop);
195 _addConvert(cd->titleElement(),cnn->title);
196 _addConvert(cd->descriptionElement(),cnn->description);
197 _addConvert(cd->modulesElement(),cnn->modules);
200 const XmlNodeList& mesh_elems = cd->meshElements();
201 for( Integer i=0, n=mesh_elems.size(); i<n; ++i ){
202 XmlNode xnode(mesh_elems.node(i));
203 _addConvert(xnode,cnn->mesh);
204 _addConvert(xnode.child(current_cnn->mesh_file),cnn->mesh_file);
207 _addConvert(cd->functionsElement(),cnn->functions);
218 return my_visitor.convertString() + m_global_convert_string;
224void CaseDocumentLangTranslator::
225_addConvert(XmlNode node,
const String& new_name)
228 m_global_convert_string = m_global_convert_string + node.xpathFullName() +
":" + new_name +
"\n";
Visiteur abstrait pour une donnée scalaire.
Classe de base d'une option du jeu de donnée.
Option du jeu de donnée de type énumération.
Option du jeu de données de type étendu.
Option du jeu de données de type liste d'énumération.
Option du jeu de donnée de type liste de types étendus.
Classe de base d'une option service pouvant être présente plusieurs fois.
Classe de base de l'implémentation des options utilisant des services.
Classe de base des options simples (uniquement une valeur).
EnumeratorT< ICaseOptions * > Enumerator
Type d'un itérateur sur toute la collection.
Interface d'une liste d'options du jeu de données.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Flot de sortie lié à une String.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
Classe d'accès aux traces.
ITraceMng * traceMng() const
Gestionnaire de trace.
TraceMessage info() const
Flot pour un message d'information.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< ICaseOptions * > CaseOptionsCollection
Collection d'options du jeu de données.