Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ISimpleTableReaderWriter.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/* ISimpleTableReaderWriter.h (C) 2000-2025 */
9/* */
10/* Interface représentant un lecteur/écrivain de tableau simple. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ISIMPLETABLEREADERWRITER_H
13#define ARCANE_CORE_ISIMPLETABLEREADERWRITER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/ISimpleTableInternalMng.h"
18
19#include "arcane/core/Directory.h"
20#include "arcane/core/IParallelMng.h"
22#include "arcane/utils/Iostream.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
38class ARCANE_CORE_EXPORT SimpleTableReaderWriterUtils
39{
40 public:
51 static bool createDirectoryOnlyProcess0(IParallelMng* parallel_mng, const Directory& directory)
52 {
53 int sf = 0;
54 if (parallel_mng->commRank() == 0) {
55 sf = directory.createDirectory();
56 }
57 if (parallel_mng->commSize() > 1) {
58 sf = parallel_mng->reduce(Parallel::ReduceMax, sf);
59 }
60 return sf == 0;
61 };
62
70 static bool isFileExist(const Directory& directory, const String& file)
71 {
72 std::ifstream stream;
73 stream.open(directory.file(file).localstr(), std::ifstream::in);
74 bool fin = stream.good();
75 stream.close();
76 return fin;
77 };
78};
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
82
96class ARCANE_CORE_EXPORT ISimpleTableReaderWriter
97{
98 public:
99 virtual ~ISimpleTableReaderWriter() = default;
100
101 public:
124 virtual bool writeTable(const Directory& dst, const String& file_name) = 0;
125
157 virtual bool readTable(const Directory& src, const String& file_name) = 0;
158
163 virtual void clearInternal() = 0;
164
172 virtual void print() = 0;
173
180 virtual Integer precision() = 0;
181
198 virtual void setPrecision(Integer precision) = 0;
199
207 virtual bool isFixed() = 0;
228 virtual void setFixed(bool fixed) = 0;
229
248 virtual void setForcedToUseScientificNotation(bool use_scientific) = 0;
249
257 virtual String fileType() = 0;
258
266
273 virtual void setInternal(const Ref<SimpleTableInternal>& simple_table_internal) = 0;
274};
275
276/*---------------------------------------------------------------------------*/
277/*---------------------------------------------------------------------------*/
278
279} // End namespace Arcane
280
281/*---------------------------------------------------------------------------*/
282/*---------------------------------------------------------------------------*/
283
284#endif
285
286/*---------------------------------------------------------------------------*/
287/*---------------------------------------------------------------------------*/
Déclarations de types sur les entités.
Classe gérant un répertoire.
Definition Directory.h:35
String file(const String &file_name) const override
Retourne le chemin complet du fichier file_name dans le répertoire.
Definition Directory.cc:120
bool createDirectory() const override
Créé le répertoire.
Definition Directory.cc:102
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
Interface de classe permettant de lire un fichier et d'écrire un fichier avec ou à partir d'un Simple...
virtual bool isForcedToUseScientificNotation()=0
Méthode permettant de savoir si le frag 'std::scientific' est actif ou non pour l'écriture des valeur...
virtual bool writeTable(const Directory &dst, const String &file_name)=0
Méthode permettant d'écrire un tableau simple dans un fichier.
virtual void setPrecision(Integer precision)=0
Méthode permettant de modifier la précision du print.
virtual void setInternal(const Ref< SimpleTableInternal > &simple_table_internal)=0
Méthode permettant de définir une référence vers un SimpleTableInternal.
virtual Integer precision()=0
Méthode permettant de récupérer la précision actuellement utilisée pour l'écriture des valeurs.
virtual bool isFixed()=0
Méthode permettant de savoir si le frag 'std::fixed' est actif ou non pour l'écriture des valeurs.
virtual bool readTable(const Directory &src, const String &file_name)=0
Méthode permettant de lire un fichier contenant un tableau simple.
virtual void setFixed(bool fixed)=0
Méthode permettant de définir le flag 'std::fixed' ou non.
virtual Ref< SimpleTableInternal > internal()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
virtual void setForcedToUseScientificNotation(bool use_scientific)=0
Méthode permettant de définir le flag 'std::scientific' ou non.
virtual String fileType()=0
Méthode permettant de récupérer le type de fichier qui sera écrit par l'implémentation....
virtual void clearInternal()=0
Méthode permettant d'effacer le contenu de l'objet SimpleTableInternal.
virtual void print()=0
Méthode permettant d'écrire le tableau dans la sortie standard.
Référence à une instance.
Classe contenant deux méthodes statiques utile pour les implémentations.
static bool createDirectoryOnlyProcess0(IParallelMng *parallel_mng, const Directory &directory)
Méthode statique permettant de créer un répertoire avec plusieurs processus.
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.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
Definition String.cc:228
@ ReduceMax
Maximum des valeurs.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.