15#include "arcane/std/SimpleCsvComparatorService.h"
17#include "arcane/Directory.h"
18#include "arcane/IMesh.h"
19#include "arcane/IParallelMng.h"
20#include "arcane/utils/Iostream.h"
39 ARCANE_CHECK_PTR(simple_table_output_ptr);
40 m_simple_table_output_ptr = simple_table_output_ptr;
42 if (!m_is_already_init) {
43 m_is_already_init =
true;
47 m_simple_table_internal_comparator.setInternalRef(m_simple_table_internal_reference);
48 m_simple_csv_reader_writer.setInternal(m_simple_table_internal_reference);
51 m_simple_table_internal_to_compare = m_simple_table_output_ptr->
internal();
52 m_simple_table_internal_comparator.setInternalToCompare(m_simple_table_internal_to_compare);
55 m_output_directory = m_simple_table_output_ptr->outputDirectory();
56 m_root_path =
Directory(subDomain()->exportDirectory(), m_simple_table_output_ptr->fileType() +
"_refs");
57 m_reference_path =
Directory(m_root_path, m_output_directory);
58 m_table_name = m_simple_table_output_ptr->tableName();
59 m_file_name = m_table_name +
"." + m_simple_table_output_ptr->fileType();
68 m_simple_table_internal_comparator.clearComparator();
69 m_is_file_read =
false;
71 if (m_is_already_init) {
72 m_simple_table_internal_reference->clear();
82 m_root_path = root_directory;
83 m_reference_path =
Directory(m_root_path, m_output_directory);
92 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank)
94 m_simple_csv_reader_writer.print();
105 ARCANE_CHECK_PTR(m_simple_table_output_ptr);
107 Integer save_preci = m_simple_table_output_ptr->precision();
108 bool save_scientific = m_simple_table_output_ptr->isForcedToUseScientificNotation();
109 bool save_fixed = m_simple_table_output_ptr->isFixed();
112 m_simple_table_output_ptr->setPrecision(std::numeric_limits<Real>::max_digits10);
113 m_simple_table_output_ptr->setForcedToUseScientificNotation(
true);
114 m_simple_table_output_ptr->setFixed(
false);
117 bool fin = m_simple_table_output_ptr->writeFile(m_root_path, rank);
120 m_simple_table_output_ptr->setPrecision(save_preci);
121 m_simple_table_output_ptr->setForcedToUseScientificNotation(save_scientific);
122 m_simple_table_output_ptr->setFixed(save_fixed);
133 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank)
136 m_is_file_read = m_simple_csv_reader_writer.readTable(m_reference_path, m_table_name);
138 return m_is_file_read;
147 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank)
160 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank) {
165 error() <<
"Error with the file reader: invalid file";
169 return m_simple_table_internal_comparator.compare(compare_dimension_too);
179 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank) {
184 error() <<
"Error with the file reader: invalid file";
188 return m_simple_table_internal_comparator.compareElem(column_name, row_name);
198 if (rank != -1 && subDomain()->parallelMng()->commRank() != rank) {
203 error() <<
"Error with the file reader: invalid file";
207 return m_simple_table_internal_comparator.compareElem(elem, column_name, row_name);
216 return m_simple_table_internal_comparator.addColumnForComparing(column_name);
225 return m_simple_table_internal_comparator.addRowForComparing(row_name);
234 m_simple_table_internal_comparator.isAnArrayExclusiveColumns(is_exclusive);
243 m_simple_table_internal_comparator.isAnArrayExclusiveRows(is_exclusive);
252 m_simple_table_internal_comparator.editRegexColumns(regex_column);
261 m_simple_table_internal_comparator.editRegexRows(regex_row);
270 m_simple_table_internal_comparator.isARegexExclusiveColumns(is_exclusive);
279 m_simple_table_internal_comparator.isARegexExclusiveRows(is_exclusive);
288 return m_simple_table_internal_comparator.addEpsilonColumn(column_name, epsilon);
297 return m_simple_table_internal_comparator.addEpsilonRow(row_name, epsilon);
Classe gérant un répertoire.
Interface représentant une sortie de tableau simple.
virtual Ref< SimpleTableInternal > internal()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
void init(ISimpleTableOutput *simple_table_output_ptr) override
Méthode permettant d'initialiser le service.
bool addColumnForComparing(const String &column_name) override
Méthode permettant d'ajouter une colonne dans la liste des colonnes à comparer.
void editRegexColumns(const String ®ex_column) override
Méthode permettant d'ajouter une expression régulière permettant de déterminer les colonnes à compare...
bool addRowForComparing(const String &row_name) override
Méthode permettant d'ajouter une ligne dans la liste des lignes à comparer.
void isAnArrayExclusiveColumns(bool is_exclusive) override
Méthode permettant de définir si le tableau de colonnes représente les colonnes à inclure dans la com...
bool addEpsilonRow(const String &row_name, Real epsilon) override
Méthode permettant de définir un epsilon pour une ligne donnée. Cet epsilon doit être positif pour êt...
bool writeReferenceFile(Integer rank) override
void isARegexExclusiveColumns(bool is_exclusive) override
Méthode permettant de demander à ce que l'expression régulière exclut des colonnes au lieu d'en inclu...
void clear() override
Méthode permettant d'effacer les données lues par readReferenceFile().
void print(Integer rank) override
Méthode permettant d'afficher le tableau lu.
bool isReferenceExist(Integer rank) override
Méthode permettant de savoir si les fichiers de réferences existent.
void isAnArrayExclusiveRows(bool is_exclusive) override
Méthode permettant de définir si le tableau de lignes représente les lignes à inclure dans la compara...
bool compareWithReference(Integer rank, bool compare_dimension_too) override
Méthode permettant de comparer l'objet de type ISimpleTableOutput aux fichiers de réferences.
void editRegexRows(const String ®ex_row) override
Méthode permettant d'ajouter une expression régulière permettant de déterminer les lignes à comparer.
bool readReferenceFile(Integer rank) override
Méthode permettant de lire les fichiers de références.
bool addEpsilonColumn(const String &column_name, Real epsilon) override
Méthode permettant de définir un epsilon pour une colonne donnée. Cet epsilon doit être positif pour ...
void isARegexExclusiveRows(bool is_exclusive) override
Méthode permettant de demander à ce que l'expression régulière exclut des lignes au lieu d'en inclure...
bool compareElemWithReference(const String &column_name, const String &row_name, Integer rank) override
Méthode permettant de comparer uniquement un élement. Les deux SimpleTableInternal sont représentés p...
void editRootDirectory(const Directory &root_directory) override
Méthode permettant de modifier le répertoire racine. Cela permet d'écrire ou de rechercher des fichie...
static bool isFileExist(const Directory &directory, const String &file)
Méthode statique permettant de vérifier l'existance d'un fichier.
Chaîne de caractères unicode.
TraceMessage error() const
Flot pour un message d'erreur.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.
Structure représentant un tableau simple.