Arcane  v3.14.10.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-2022 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-2022 */
9/* */
10/* Interface représentant un lecteur/écrivain de tableau simple. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_ISIMPLETABLEREADERWRITER_H
15#define ARCANE_ISIMPLETABLEREADERWRITER_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/ISimpleTableInternalMng.h"
21
22#include "arcane/Directory.h"
23#include "arcane/IParallelMng.h"
24#include "arcane/ItemTypes.h"
25#include "arcane/utils/Iostream.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
41class ARCANE_CORE_EXPORT SimpleTableReaderWriterUtils
42{
43 public:
55 {
56 int sf = 0;
57 if (parallel_mng->commRank() == 0) {
58 sf = directory.createDirectory();
59 }
60 if (parallel_mng->commSize() > 1) {
61 sf = parallel_mng->reduce(Parallel::ReduceMax, sf);
62 }
63 return sf == 0;
64 };
73 static bool isFileExist(const Directory& directory, const String& file)
74 {
75 std::ifstream stream;
76 stream.open(directory.file(file).localstr(), std::ifstream::in);
77 bool fin = stream.good();
78 stream.close();
79 return fin;
80 };
81};
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
99class ARCANE_CORE_EXPORT ISimpleTableReaderWriter
100{
101 public:
102 virtual ~ISimpleTableReaderWriter() = default;
103
104 public:
127 virtual bool writeTable(const Directory& dst, const String& file_name) = 0;
128
160 virtual bool readTable(const Directory& src, const String& file_name) = 0;
161
166 virtual void clearInternal() = 0;
167
175 virtual void print() = 0;
176
183 virtual Integer precision() = 0;
184
201 virtual void setPrecision(Integer precision) = 0;
202
210 virtual bool isFixed() = 0;
231 virtual void setFixed(bool fixed) = 0;
232
252
260 virtual String fileType() = 0;
261
269
277};
278
279/*---------------------------------------------------------------------------*/
280/*---------------------------------------------------------------------------*/
281
282} // End namespace Arcane
283
284/*---------------------------------------------------------------------------*/
285/*---------------------------------------------------------------------------*/
286
287#endif
288
289/*---------------------------------------------------------------------------*/
290/*---------------------------------------------------------------------------*/
Classe gérant un répertoire.
Definition Directory.h:33
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
Definition Directory.cc:138
virtual bool createDirectory() const
Créé le répertoire.
Definition Directory.cc:120
Interface du gestionnaire de parallélisme pour un sous-domaine.
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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-