Arcane  v3.16.8.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ISimpleTableWriterHelper.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ISimpleTableWriterHelper.h (C) 2000-2025 */
9/* */
10/* Interface représentant un écrivain simple utilisant un */
11/* ISimpleTableReaderWriter. */
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_CORE_ISIMPLETABLEWRITERHELPER_H
14#define ARCANE_CORE_ISIMPLETABLEWRITERHELPER_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/core/ISimpleTableInternalMng.h"
19#include "arcane/core/ISimpleTableReaderWriter.h"
20
21#include "arcane/core/Directory.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33/**
34 * @brief Interface de classe permettant d'écrire un fichier
35 * avec ISimpleTableReaderWriter.
36 * Fournit des méthodes permettant de gérer l'écriture en parallèle
37 * et les symboles de noms.
38 *
39 * Cette classe est, en quelque sorte, une surcouche de
40 * ISimpleTableReaderWriter qui est assez basique.
41 * ISimpleTableWriterHelper est là pour simplifier
42 * l'utilisation de ISimpleTableReaderWriter.
43 *
44 * Dans la partie SimpleTable, les symboles de noms sont des
45 * mots-clefs entourés d'arobases et qui seront replacés
46 * par leur signfication lors de l'exécution.
47 * Dans l'implémentation SimpleTableWriterHelper, il y a
48 * actuellement deux symboles de noms pris en charge :
49 * - \@proc_id\@ : Sera remplacé par l'id du processus.
50 * - \@num_procs\@ : Sera remplacé par le nombre de processus.
51 * Et dans SimpleTableWriterHelper, ces symboles ne sont remplacés
52 * que dans le nom du tableau.
53 */
54class ARCANE_CORE_EXPORT ISimpleTableWriterHelper
55{
56 public:
57 virtual ~ISimpleTableWriterHelper() = default;
58
59 public:
60 /**
61 * @brief Méthode permettant d'initialiser l'objet.
62 * Notamment le nom du tableau et le nom du répertoire qui contiendra
63 * les fichiers (le répertoire des tableaux/directory_name).
64 *
65 * @param table_name Le nom du tableau (et du fichier de sortie).
66 * @param directory_name Le nom du dossier dans lequel enregistrer les tableaux.
67 */
68 virtual bool init(const Directory& root_directory, const String& table_name, const String& directory_name) = 0;
69
70 /*---------------------------------------------------------------------------*/
71 /*---------------------------------------------------------------------------*/
72
73 /**
74 * @brief Méthode permettant d'afficher le tableau.
75 *
76 * @param rank L'id du processus devant afficher le tableau (-1 pour
77 * signifier "tous les processus").
78 */
79 virtual void print(Integer rank = 0) = 0;
80
81 /**
82 * @brief Méthode permettant d'écrire le tableau dans un fichier.
83 * Si rank != -1, les processus autres que rank retournent true.
84 *
85 * Par exemple, dans l'implémentation SimpleTableWriterHelper,
86 * le ou les fichiers seront écrits dans le répertoire :
87 * root_directory/[directory_name]/[table_name].[ISimpleTableReaderWriter.fileType()]
88 *
89 * @param root_directory Le répertoire racine où créer le répertoire des tableaux.
90 * @param rank L'id du processus devant écrire dans un fichier
91 * le tableau (-1 pour signifier "tous les processus").
92 * @return true Si le fichier a été correctement écrit.
93 * @return false Si le fichier n'a pas été correctement écrit.
94 */
95 virtual bool writeFile(const Directory& root_directory, Integer rank) = 0;
96
97 /**
98 * @brief Méthode permettant d'écrire le tableau dans un fichier.
99 * Si rank != -1, les processus autres que rank retournent true.
100 *
101 * Par exemple, dans l'implémentation SimpleTableWriterHelper,
102 * le ou les fichiers seront écrits dans le répertoire :
103 * ./[output]/[directory_name]/[table_name].[ISimpleTableReaderWriter.fileType()]
104 *
105 * @param rank L'id du processus devant écrire dans un fichier
106 * le tableau (-1 pour signifier "tous les processus").
107 * @return true Si le fichier a été correctement écrit.
108 * @return false Si le fichier n'a pas été correctement écrit.
109 */
110 virtual bool writeFile(Integer rank = -1) = 0;
111
112 /*---------------------------------------------------------------------------*/
113 /*---------------------------------------------------------------------------*/
114
115 /**
116 * @brief Méthode permettant de récupérer la précision actuellement
117 * utilisée pour l'écriture des valeurs.
118 *
119 * @return Integer La précision.
120 */
121 virtual Integer precision() = 0;
122 /**
123 * @brief Méthode permettant de modifier la précision du print.
124 *
125 * Aussi bien pour la méthode 'print()' que les méthodes 'writeFile()'.
126 *
127 * @warning Le flag "std::fixed" modifie le comportement de "setPrecision()",
128 * si le flag "std::fixed" est désactivé, la précision définira le
129 * nombre de chiffres total (avant et après la virgule) ;
130 * si le flag "std::fixed" est activé, la précision définira le
131 * nombre de chiffres après la virgule. Attention donc lors de
132 * l'utilisation de "std::numeric_limits<Real>::max_digits10"
133 * (pour l'écriture) ou de "std::numeric_limits<Real>::digits10"
134 * (pour la lecture) qui sont à utiliser sans le flag "std::fixed".
135 *
136 * @param precision La nouvelle précision.
137 */
138 virtual void setPrecision(Integer precision) = 0;
139
140 /**
141 * @brief Méthode permettant de savoir si le frag 'std::fixed' est
142 * actif ou non pour l'écriture des valeurs.
143 *
144 * @return true Si oui.
145 * @return false Si non.
146 */
147 virtual bool isFixed() = 0;
148 /**
149 * @brief Méthode permettant de définir le flag 'std::fixed' ou non.
150 *
151 * Aussi bien pour la méthode 'print()' que les méthodes 'writeFile()'.
152 *
153 * Ce flag permet de 'forcer' le nombre de chiffre après la virgule à
154 * la précision voulu. Par exemple, si l'on a appelé 'setPrecision(4)',
155 * et que l'on appelle 'setFixed(true)', le print de '6.1' donnera '6.1000'.
156 *
157 * @warning Le flag "std::fixed" modifie le comportement de "setPrecision()",
158 * si le flag "std::fixed" est désactivé, la précision définira le
159 * nombre de chiffres total (avant et après la virgule) ;
160 * si le flag "std::fixed" est activé, la précision définira le
161 * nombre de chiffres après la virgule. Attention donc lors de
162 * l'utilisation de "std::numeric_limits<Real>::max_digits10"
163 * (pour l'écriture) ou de "std::numeric_limits<Real>::digits10"
164 * (pour la lecture) qui sont à utiliser sans le flag "std::fixed".
165 *
166 * @param fixed Si le flag 'std::fixed' doit être défini ou non.
167 */
168 virtual void setFixed(bool fixed) = 0;
169
170 /**
171 * @brief Méthode permettant de savoir si le frag 'std::scientific' est
172 * actif ou non pour l'écriture des valeurs.
173 *
174 * @return true Si oui.
175 * @return false Si non.
176 */
178 /**
179 * @brief Méthode permettant de définir le flag 'std::scientific' ou non.
180 *
181 * Aussi bien pour la méthode 'print()' que la méthode 'writetable()'.
182 *
183 * Ce flag permet de 'forcer' l'affichage des valeurs en écriture
184 * scientifique.
185 *
186 * @param use_scientific Si le flag 'std::scientific' doit être défini ou non.
187 */
188 virtual void setForcedToUseScientificNotation(bool use_scientific) = 0;
189
190 /**
191 * @brief Méthode permettant de récupérer le nom du répertoire tel qu'il
192 * a été donné précédement.
193 *
194 * Ici, les symboles de noms sont toujours présent.
195 *
196 * @return String Le répertoire.
197 */
199
200 /**
201 * @brief Méthode permettant de récupérer le nom du répertoire où sera
202 * placé les tableaux.
203 *
204 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
205 *
206 * Ici, les symboles de noms ont été résolus.
207 *
208 * @return String Le répertoire.
209 */
210 virtual String outputDirectory() = 0;
211 /**
212 * @brief Méthode permettant de définir le répertoire
213 * dans lequel enregistrer les tableaux.
214 *
215 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
216 *
217 * @param directory Le répertoire.
218 */
219 virtual void setOutputDirectory(const String& directory) = 0;
220
221 /**
222 * @brief Méthode permettant de récupérer le nom du tableau tel qu'il
223 * a été donné précédement.
224 *
225 * Ici, les symboles de noms sont toujours présent.
226 *
227 * @return String Le nom.
228 */
230
231 /**
232 * @brief Méthode permettant de récupérer le nom du tableau.
233 *
234 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
235 *
236 * Ici, les symboles de noms ont été résolus.
237 *
238 * @return String Le nom.
239 */
240 virtual String tableName() = 0;
241 /**
242 * @brief Méthode permettant de définir le nom du tableau.
243 *
244 * @param name Le nom.
245 */
246 virtual void setTableName(const String& name) = 0;
247
248 /**
249 * @brief Méthode permettant de récupérer le nom du fichier.
250 *
251 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
252 *
253 * Ici, les symboles de noms ont été résolus et l'extension est ajoutée.
254 *
255 * @return String Le nom.
256 */
257 virtual String fileName() = 0;
258
259 /**
260 * @brief Méthode permettant de récupérer le chemin où sera
261 * enregistrés les tableaux.
262 *
263 * Exemple (relatif) :
264 * ./output/csv/[directory_name]/
265 *
266 * @return String Le chemin.
267 */
268 virtual Directory outputPath() = 0;
269
270 /**
271 * @brief Méthode permettant de récupérer le chemin où l'implémentation
272 * enregistre ces tableaux.
273 *
274 * Exemple (relatif) :
275 * ./output/csv/
276 *
277 * @return String Le chemin.
278 */
279 virtual Directory rootPath() = 0;
280
281 /**
282 * @brief Méthode permettant de savoir si les paramètres actuellement en possession
283 * de l'implémentation lui permet d'écrire un fichier par processus, notamment
284 * grâce aux symboles de noms.
285 *
286 * @return true Si oui, l'implémentation peut écrire un fichier par processus.
287 * @return false Sinon, il n'y a qu'un seul fichier qui peut être écrit.
288 */
289 virtual bool isOneFileByRanksPermited() = 0;
290
291 /**
292 * @brief Méthode permettant de connaitre le type de fichier qui sera utilisé.
293 *
294 * @return String Le type de fichier de sortie (= l'extension).
295 */
296 virtual String fileType() = 0;
297
298 /**
299 * @brief Méthode permettant de récupérer une référence vers l'objet
300 * SimpleTableInternal utilisé.
301 *
302 * @return Ref<SimpleTableInternal> Une copie de la référence.
303 */
305
306 /**
307 * @brief Méthode permettant de récupérer une référence vers l'objet
308 * ISimpleTableReaderWriter utilisé.
309 *
310 * @return Ref<ISimpleTableReaderWriter> Une copie de la référence.
311 */
313
314 /**
315 * @brief Méthode permettant de définir une référence vers un
316 * ISimpleTableReaderWriter.
317 *
318 * @param simple_table_reader_writer La référence vers un ISimpleTableReaderWriter.
319 */
320 virtual void setReaderWriter(const Ref<ISimpleTableReaderWriter>& simple_table_reader_writer) = 0;
321};
322
323/*---------------------------------------------------------------------------*/
324/*---------------------------------------------------------------------------*/
325
326} // End namespace Arcane
327
328/*---------------------------------------------------------------------------*/
329/*---------------------------------------------------------------------------*/
330
331#endif
332
333/*---------------------------------------------------------------------------*/
334/*---------------------------------------------------------------------------*/
Déclarations de types sur les entités.
Classe gérant un répertoire.
Definition Directory.h:35
Interface de classe permettant d'écrire un fichier avec ISimpleTableReaderWriter. Fournit des méthode...
virtual String outputDirectory()=0
Méthode permettant de récupérer le nom du répertoire où sera placé les tableaux.
virtual bool isForcedToUseScientificNotation()=0
Méthode permettant de savoir si le frag 'std::scientific' est actif ou non pour l'écriture des valeur...
virtual Directory rootPath()=0
Méthode permettant de récupérer le chemin où l'implémentation enregistre ces tableaux.
virtual Ref< ISimpleTableReaderWriter > readerWriter()=0
Méthode permettant de récupérer une référence vers l'objet ISimpleTableReaderWriter utilisé.
virtual String fileName()=0
Méthode permettant de récupérer le nom du fichier.
virtual void setForcedToUseScientificNotation(bool use_scientific)=0
Méthode permettant de définir le flag 'std::scientific' ou non.
virtual void setOutputDirectory(const String &directory)=0
Méthode permettant de définir le répertoire dans lequel enregistrer les tableaux.
virtual void print(Integer rank=0)=0
Méthode permettant d'afficher le tableau.
virtual void setPrecision(Integer precision)=0
Méthode permettant de modifier la précision du print.
virtual bool writeFile(Integer rank=-1)=0
Méthode permettant d'écrire le tableau dans un fichier. Si rank != -1, les processus autres que rank ...
virtual String tableNameWithoutComputation()=0
Méthode permettant de récupérer le nom du tableau tel qu'il a été donné précédement.
virtual String tableName()=0
Méthode permettant de récupérer le nom du tableau.
virtual Integer precision()=0
Méthode permettant de récupérer la précision actuellement utilisée pour l'écriture des valeurs.
virtual Ref< SimpleTableInternal > internal()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
virtual bool init(const Directory &root_directory, const String &table_name, const String &directory_name)=0
Méthode permettant d'initialiser l'objet. Notamment le nom du tableau et le nom du répertoire qui con...
virtual Directory outputPath()=0
Méthode permettant de récupérer le chemin où sera enregistrés les tableaux.
virtual bool writeFile(const Directory &root_directory, Integer rank)=0
Méthode permettant d'écrire le tableau dans un fichier. Si rank != -1, les processus autres que rank ...
virtual String fileType()=0
Méthode permettant de connaitre le type de fichier qui sera utilisé.
virtual void setReaderWriter(const Ref< ISimpleTableReaderWriter > &simple_table_reader_writer)=0
Méthode permettant de définir une référence vers un ISimpleTableReaderWriter.
virtual String outputDirectoryWithoutComputation()=0
Méthode permettant de récupérer le nom du répertoire tel qu'il a été donné précédement.
virtual void setTableName(const String &name)=0
Méthode permettant de définir le nom du tableau.
virtual bool isOneFileByRanksPermited()=0
Méthode permettant de savoir si les paramètres actuellement en possession de l'implémentation lui per...
virtual void setFixed(bool fixed)=0
Méthode permettant de définir le flag 'std::fixed' ou non.
virtual bool isFixed()=0
Méthode permettant de savoir si le frag 'std::fixed' est actif ou non pour l'écriture des valeurs.
Référence à une instance.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.