Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SimpleTableWriterHelper.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* SimpleTableWriterHelper.h (C) 2000-2023 */
9/* */
10/* Classe permettant d'écrire un SimpleTableInternal dans un fichier. */
11/* Simplifie l'utilisation de l'écrivain en gérant le multiprocessus et les */
12/* noms des fichiers/dossiers. */
13/*---------------------------------------------------------------------------*/
14/*---------------------------------------------------------------------------*/
15
16#ifndef ARCANE_STD_SIMPLETABLEWRITERHELPER_H
17#define ARCANE_STD_SIMPLETABLEWRITERHELPER_H
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#include "arcane/ISimpleTableInternalMng.h"
23#include "arcane/ISimpleTableReaderWriter.h"
24#include "arcane/ISimpleTableWriterHelper.h"
25
26#include "arcane/Directory.h"
27#include "arcane/utils/FatalErrorException.h"
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
40{
41 public:
42
44 : m_simple_table_internal(simple_table_reader_writer->internal())
45 , m_simple_table_reader_writer(simple_table_reader_writer)
46 , m_name_output_directory("")
47 , m_name_table_without_computation("")
48 , m_root()
49 , m_name_table_computed(false)
50 , m_name_output_directory_computed(false)
51 , m_name_table_one_file_by_ranks_permited(false)
52 , m_name_output_directory_one_file_by_ranks_permited(false)
53 {
54 if (simple_table_reader_writer.isNull())
55 ARCANE_FATAL("La réference passée en paramètre est Null.");
56 }
57
59 : m_simple_table_internal()
60 , m_simple_table_reader_writer()
61 , m_name_output_directory("")
62 , m_name_table_without_computation("")
63 , m_root()
64 , m_name_table_computed(false)
65 , m_name_output_directory_computed(false)
66 , m_name_table_one_file_by_ranks_permited(false)
67 , m_name_output_directory_one_file_by_ranks_permited(false)
68 {
69 }
70
71 virtual ~SimpleTableWriterHelper() = default;
72
73 public:
74
75 bool init(const Directory& root_directory, const String& table_name, const String& directory_name) override;
76
77 void print(Integer rank) override;
78 bool writeFile(Integer rank) override;
79 bool writeFile(const Directory& root_directory, Integer rank) override;
80
81 Integer precision() override;
82 void setPrecision(Integer precision) override;
83
84 bool isFixed() override;
85 void setFixed(bool fixed) override;
86
87 bool isForcedToUseScientificNotation() override;
89
90 String outputDirectory() override;
92 void setOutputDirectory(const String& directory) override;
93
94 String tableName() override;
96 void setTableName(const String& name) override;
97
98 String fileName() override;
99
100 Directory outputPath() override;
101 Directory rootPath() override;
102
103 String fileType() override;
104
105 bool isOneFileByRanksPermited() override;
106
108
111
112 protected:
113
114 void _computeTableName();
115 void _computeOutputDirectory();
117
118 protected:
119
120 Ref<SimpleTableInternal> m_simple_table_internal;
121 Ref<ISimpleTableReaderWriter> m_simple_table_reader_writer;
122
123 String m_name_output_directory;
124 String m_name_output_directory_without_computation;
125 String m_name_table_without_computation;
126
127 Directory m_root;
128
129 bool m_name_table_computed;
130 bool m_name_output_directory_computed;
131
132 // Booleens permettant de savoir si le nom de fichier ou le nom de dossier
133 // possède le symbole "@proc_id@" qui permet l'écriture de fichiers par
134 // plusieurs processus.
135 bool m_name_table_one_file_by_ranks_permited;
136 bool m_name_output_directory_one_file_by_ranks_permited;
137};
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
141
142} // End namespace Arcane
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147#endif
148
149/*---------------------------------------------------------------------------*/
150/*---------------------------------------------------------------------------*/
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classe gérant un répertoire.
Definition Directory.h:33
Interface de classe permettant d'écrire un fichier avec ISimpleTableReaderWriter. Fournit des méthode...
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
bool init(const Directory &root_directory, const String &table_name, const String &directory_name) override
Méthode permettant d'initialiser l'objet. Notamment le nom du tableau et le nom du répertoire qui con...
String fileType() override
Méthode permettant de connaitre le type de fichier qui sera utilisé.
void setPrecision(Integer precision) override
Méthode permettant de modifier la précision du print.
String outputDirectory() override
Méthode permettant de récupérer le nom du répertoire où sera placé les tableaux.
void setTableName(const String &name) override
Méthode permettant de définir le nom du tableau.
void setFixed(bool fixed) override
Méthode permettant de définir le flag 'std::fixed' ou non.
void print(Integer rank) override
Méthode permettant d'afficher le tableau.
void setForcedToUseScientificNotation(bool use_scientific) override
Méthode permettant de définir le flag 'std::scientific' ou non.
Ref< SimpleTableInternal > internal() override
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
bool isForcedToUseScientificNotation() override
Méthode permettant de savoir si le frag 'std::scientific' est actif ou non pour l'écriture des valeur...
String fileName() override
Méthode permettant de récupérer le nom du fichier.
String outputDirectoryWithoutComputation() override
Méthode permettant de récupérer le nom du répertoire tel qu'il a été donné précédement.
Ref< ISimpleTableReaderWriter > readerWriter() override
Méthode permettant de récupérer une référence vers l'objet ISimpleTableReaderWriter utilisé.
void setOutputDirectory(const String &directory) override
Méthode permettant de définir le répertoire dans lequel enregistrer les tableaux.
bool writeFile(Integer rank) override
String tableName() override
Méthode permettant de récupérer le nom du tableau.
String tableNameWithoutComputation() override
Méthode permettant de récupérer le nom du tableau tel qu'il a été donné précédement.
void setReaderWriter(const Ref< ISimpleTableReaderWriter > &simple_table_reader_writer) override
Méthode permettant de définir une référence vers un ISimpleTableReaderWriter.
Integer precision() override
Méthode permettant de récupérer la précision actuellement utilisée pour l'écriture des valeurs.
Directory rootPath() override
Méthode permettant de récupérer le chemin où l'implémentation enregistre ces tableaux.
bool isFixed() override
Méthode permettant de savoir si le frag 'std::fixed' est actif ou non pour l'écriture des valeurs.
Directory outputPath() override
Méthode permettant de récupérer le chemin où sera enregistrés les tableaux.
String _computeName(String name, bool &one_file_by_ranks_permited)
Méthode permettant de remplacer les symboles de nom par leur valeur.
bool isOneFileByRanksPermited() override
Méthode permettant de savoir si les paramètres actuellement en possession de l'implémentation lui per...
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-