Cet exemple 2 est identique à l'exemple 1, sans l'utilisation de singletons.
Fichier .axl – Partie <options>
Pour commencer, voici les options du fichier axl :
SimpleTableComparatorExample2.axl
2 <
service-instance name=
"st-output" type=
"Arcane::ISimpleTableOutput">
3 <
description>
ST Output</
description>
5 <
service-instance name=
"st-comparator" type=
"Arcane::ISimpleTableComparator">
6 <
description>
ST Comparator</
description>
On peut constater la présence des deux services.
Fichier .arc – Partie option du module
Voici le .arc
correspondant :
SimpleTableComparatorExample2.arc
1 <
simple-table-comparator-example2>
2 <
st-output name=
"SimpleCsvOutput">
3 <
tableDir>
example2</
tableDir>
4 <
tableName>
Results_Example2</
tableName>
7 <
st-comparator name=
"SimpleCsvComparator">
9 </
simple-table-comparator-example2>
Ce que l'on peut voir ici est que le comparator n'a pas d'option.
Point d'entrée initial
Voici le point d'entrée start-init
:
SimpleTableComparatorExample2Module.cc
1void SimpleTableComparatorExample2Module::
5 options()->stOutput()->init();
Point d'entrée loop
Le point d'entrée compute-loop
:
SimpleTableComparatorExample2Module.cc
1void SimpleTableComparatorExample2Module::
4 options()->stOutput()->addColumn(
"Iteration " + String::fromNumber(m_global_iteration()));
7 Integer nb_collisions = rand()%99;
9 options()->stOutput()->addElementInRow(
"Nb de Fissions", nb_fissions);
10 options()->stOutput()->addElementInRow(
"Nb de Collisions", nb_collisions);
12 if (m_global_iteration() == 3)
13 subDomain()->timeLoopMng()->stopComputeLoop(
true);
Point d'entrée exit
Enfin, voici le point d'entrée exit
:
SimpleTableComparatorExample2Module.cc
1void SimpleTableComparatorExample2Module::
4 options()->stComparator()->init(options()->stOutput());
6 if(!options()->stComparator()->isReferenceExist()){
7 info() <<
"Écriture du fichier de référence";
8 options()->stComparator()->writeReferenceFile();
12 if(options()->stComparator()->compareWithReference()){
13 info() <<
"Mêmes valeurs !!!";
17 error() <<
"Valeurs différentes :(";
18 IArcaneMain::arcaneMain()->setErrorCode(1);
22 options()->stOutput()->writeFile();
Pas de surprises, c'est la même utilisation.