14#include "arcane/std/SimpleCsvReaderWriter.h"
16#include "arcane/Directory.h"
17#include "arcane/utils/Iostream.h"
58 if (!std::getline(stream, line)) {
71 if (
tmp.size() == 0) {
76 m_simple_table_internal->m_table_name =
tmp[0];
77 m_simple_table_internal->m_column_names =
tmp.subConstView(1,
tmp.size());
82 if (!std::getline(stream, line)) {
89 m_simple_table_internal->m_values.resize(1, m_simple_table_internal->m_column_names.size());
96 m_simple_table_internal->m_values.resize(
compt_line + 1);
110 if (
splitted_line.size() != m_simple_table_internal->m_column_names.size() + 1) {
131 }
while (std::getline(stream, line));
137 m_simple_table_internal->m_row_sizes.resize(m_simple_table_internal->m_row_names.size());
138 m_simple_table_internal->m_row_sizes.fill(m_simple_table_internal->m_values.dim2Size());
140 m_simple_table_internal->m_column_sizes.resize(m_simple_table_internal->m_column_names.size());
141 m_simple_table_internal->m_column_sizes.fill(m_simple_table_internal->m_values.dim1Size());
149 m_simple_table_internal->clear();
164 return m_precision_print;
171 m_precision_print = 1;
172 else if (
precision > (std::numeric_limits<Real>::max_digits10))
173 m_precision_print = (std::numeric_limits<Real>::max_digits10);
181 return m_is_fixed_print;
187 m_is_fixed_print =
fixed;
193 return m_scientific_notation;
208 return m_simple_table_internal;
215 ARCANE_FATAL(
"La réference passée en paramètre est Null.");
222bool SimpleCsvReaderWriter::
223_openFile(std::ifstream& stream,
Directory directory,
const String& file)
225 stream.open(directory.
file(file).localstr(), std::ifstream::in);
226 return stream.good();
229void SimpleCsvReaderWriter::
230_closeFile(std::ifstream& stream)
235void SimpleCsvReaderWriter::
236_print(std::ostream& stream)
239 std::ios_base::fmtflags save_flags = stream.flags();
240 std::streamsize save_prec = stream.precision();
242 if (m_is_fixed_print) {
243 stream << std::setiosflags(std::ios::fixed);
245 if (m_scientific_notation) {
246 stream << std::scientific;
248 stream << std::setprecision(m_precision_print);
250 stream << m_simple_table_internal->m_table_name << m_separator;
252 for (Integer j = 0; j < m_simple_table_internal->m_column_names.size(); j++) {
253 stream << m_simple_table_internal->m_column_names[j] << m_separator;
257 for (Integer i = 0; i < m_simple_table_internal->m_values.dim1Size(); i++) {
258 stream << m_simple_table_internal->m_row_names[i] << m_separator;
259 ConstArrayView<Real> view = m_simple_table_internal->m_values[i];
260 for (Integer j = 0; j < m_simple_table_internal->m_values.dim2Size(); j++) {
261 stream << view[j] << m_separator;
266 stream.flags(save_flags);
267 stream.precision(save_prec);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classe gérant un répertoire.
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void setFixed(bool fixed) override
Méthode permettant de définir le flag 'std::fixed' ou non.
void setInternal(const Ref< SimpleTableInternal > &simple_table_internal) override
Méthode permettant de définir une référence vers un SimpleTableInternal.
bool isForcedToUseScientificNotation() override
Méthode permettant de savoir si le frag 'std::scientific' est actif ou non pour l'écriture des valeur...
void clearInternal() override
Méthode permettant d'effacer le contenu de l'objet SimpleTableInternal.
void setForcedToUseScientificNotation(bool use_scientific) override
Méthode permettant de définir le flag 'std::scientific' ou non.
bool readTable(const Directory &src, const String &file_name) override
Méthode permettant de lire un fichier contenant un tableau simple.
String fileType() override
Méthode permettant de récupérer le type de fichier qui sera écrit par l'implémentation....
void print() override
Méthode permettant d'écrire le tableau dans la sortie standard.
bool isFixed() override
Méthode permettant de savoir si le frag 'std::fixed' est actif ou non pour l'écriture des valeurs.
Ref< SimpleTableInternal > internal() override
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
bool writeTable(const Directory &dst, const String &file_name) override
Méthode permettant d'écrire un tableau simple dans un fichier.
void setPrecision(Integer precision) override
Méthode permettant de modifier la précision du print.
Integer precision() override
Méthode permettant de récupérer la précision actuellement utilisée pour l'écriture des valeurs.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-