Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IIOMng.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/* IIOMng.h (C) 2000-2014 */
9/* */
10/* Interface du gestionnaire des entrées-sorties. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IIOMNG_H
13#define ARCANE_IIOMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class XmlNode;
28class IXmlDocumentHolder;
29class IParallelMng;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33/*!
34 * \ingroup IO
35 * \brief Interface du gestionnaire des entrées sorties.
36 *
37 * \todo gestionnaire des entrées sorties permettant d'encapsuler
38 * la gestion des fichiers en parallèles.
39 *
40 */
41class IIOMng
42{
43 public:
44
45 virtual ~IIOMng() {} //!< Libère les ressources
46
47 public:
48
49 /*!
50 * \brief Lit et analyse le fichier XML \a filename.
51 *
52 * En cas d'erreur, retourne 0.
53 * L'appelant est propriétaire de l'instance retournée et doit
54 * la détruire par l'opérateur delete.
55 * Si un nom de schéma est spécifié, la cohérence
56 * du fichier relativement au schéma est vérifiée.
57 */
58 virtual IXmlDocumentHolder* parseXmlFile(const String& filename,
59 const String& schemaname=String()) =0;
60
61 /*!
62 * \brief Lit et analyse le fichier XML \a filename.
63 *
64 * En cas d'erreur, retourne 0.
65 * L'appelant est propriétaire de l'instance retournée et doit
66 * la détruire par l'opérateur delete.
67 * La cohérence du fichier relativement au schéma est vérifiée;
68 * Le nom du schéma est donnée uniquement pour traitement des messages d'erreurs.
69 */
70 virtual IXmlDocumentHolder* parseXmlFile(const String& filename,
71 const String& schemaname,
72 ByteConstArrayView schema_data) =0;
73
74 /*!
75 * \brief Lit et analyse le fichier XML contenu dans le buffer \a buffer.
76 *
77 * En cas d'erreur, retourne 0.
78 * L'appelant est propriétaire de l'instance retournée et doit
79 * la détruire par l'opérateur delete.
80 * L'argument \a name associe un nom à la zone mémoire qui est
81 * utilisé pour afficher les messages d'erreur.
82 */
84
85 /*!
86 * \brief Lit et analyse le fichier XML contenu dans le buffer \a buffer.
87 *
88 * En cas d'erreur, retourne 0.
89 * L'appelant est propriétaire de l'instance retournée et doit
90 * la détruire par l'opérateur delete.
91 * L'argument \a name associe un nom à la zone mémoire qui est
92 * utilisé pour afficher les messages d'erreur.
93 */
95
96 /*!
97 * \brief Lit et analyse le fichier XML contenu dans la chaîne \a str.
98 *
99 * En cas d'erreur, retourne 0.
100 * L'appelant est propriétaire de l'instance retournée et doit
101 * la détruire par l'opérateur delete.
102 * L'argument \a name associe un nom à la zone mémoire qui est
103 * utilisé pour afficher les messages d'erreur.
104 */
105 virtual IXmlDocumentHolder* parseXmlString(const String& str,const String& name) =0;
106
107 /*! \brief Ecrit l'arbre XML du document \a doc dans le fichier filename.
108 * \retval true en cas d'erreur,
109 * \return false en cas de succès.
110 */
111 virtual bool writeXmlFile(IXmlDocumentHolder* doc,const String& filename, const bool indented=false) =0;
112
113 /*!
114 * \brief Lecture collective d'un fichier.
115 *
116 * Lit collectivement le fichier \a filename et retourne son
117 * contenu dans \a bytes. Le fichier est considéré comme un fichier binaire.
118 * La lecture collective signifie que l'ensemble des
119 * processeurs appellent cette opération et vont lire le même fichier.
120 * L'implémentation peut alors optimiser les accès disque en regroupant la
121 * lecture effective sur un ou plusieurs processeurs puis envoyer le
122 * contenu du fichier sur les autres.
123 *
124 * \retval true en cas d'erreur
125 * \retval false si tout est ok.
126 */
127 virtual bool collectiveRead(const String& filename,ByteArray& bytes) =0;
128
129 /*!
130 * \brief Lecture collective d'un fichier.
131 *
132 * Lit collectivement le fichier \a filename et retourne son
133 * contenu dans \a bytes. Le fichier est considéré comme un fichier binaire
134 * si \a is_binary est vrai.
135 * La lecture collective signifie que l'ensemble des
136 * processeurs appellent cette opération et vont lire le même fichier.
137 * L'implémentation peut alors optimiser les accès disque en regroupant la
138 * lecture effective sur un ou plusieurs processeurs puis envoyer le
139 * contenu du fichier sur les autres.
140 *
141 * \retval true en cas d'erreur
142 * \retval false si tout est ok.
143 */
144 virtual bool collectiveRead(const String& filename,ByteArray& bytes,bool is_binary) =0;
145
146 /*!
147 * \brief Lecture locale d'un fichier.
148 *
149 * Lit localement le fichier \a filename et retourne son
150 * contenu dans \a bytes. Le fichier est considéré comme un fichier binaire.
151 * Cette opération n'est pas collective.
152 *
153 * \retval true en cas d'erreur.
154 * \retval false si tout est ok.
155 *
156 * \warning retourne aussi true si le fichier est vide.
157 * \warning si le ByteUniqueArray doit être converti en String, il _faut_ y ajouter un 0 terminal au préalable (bytes.add(0))
158 */
159 virtual bool localRead(const String& filename,ByteArray& bytes) =0;
160
161 /*!
162 * \brief Lecture locale d'un fichier.
163 *
164 * Lit localement le fichier \a filename et retourne son
165 * contenu dans \a bytes.
166 * Cette opération n'est pas collective.
167 *
168 * \retval true en cas d'erreur.
169 * \retval false si tout est ok.
170 *
171 * \warning retourne aussi true si le fichier est vide.
172 * \warning si le ByteUniqueArray doit être converti en String, il _faut_ y ajouter un 0 terminal au préalable (bytes.add(0))
173 */
174 virtual bool localRead(const String& filename,ByteArray& bytes,bool is_binary) =0;
175};
176
177/*---------------------------------------------------------------------------*/
178/*---------------------------------------------------------------------------*/
179
180ARCANE_END_NAMESPACE
181
182/*---------------------------------------------------------------------------*/
183/*---------------------------------------------------------------------------*/
184
185#endif
186
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
virtual bool writeXmlFile(IXmlDocumentHolder *doc, const String &filename, const bool indented=false)=0
Ecrit l'arbre XML du document doc dans le fichier filename.
virtual bool localRead(const String &filename, ByteArray &bytes, bool is_binary)=0
Lecture locale d'un fichier.
virtual IXmlDocumentHolder * parseXmlFile(const String &filename, const String &schemaname=String())=0
Lit et analyse le fichier XML filename.
virtual IXmlDocumentHolder * parseXmlFile(const String &filename, const String &schemaname, ByteConstArrayView schema_data)=0
Lit et analyse le fichier XML filename.
virtual IXmlDocumentHolder * parseXmlBuffer(Span< const std::byte > buffer, const String &name)=0
Lit et analyse le fichier XML contenu dans le buffer buffer.
virtual bool localRead(const String &filename, ByteArray &bytes)=0
Lecture locale d'un fichier.
virtual bool collectiveRead(const String &filename, ByteArray &bytes, bool is_binary)=0
Lecture collective d'un fichier.
virtual bool collectiveRead(const String &filename, ByteArray &bytes)=0
Lecture collective d'un fichier.
virtual ~IIOMng()
Libère les ressources.
Definition IIOMng.h:45
virtual IXmlDocumentHolder * parseXmlString(const String &str, const String &name)=0
Lit et analyse le fichier XML contenu dans la chaîne str.
virtual IXmlDocumentHolder * parseXmlBuffer(Span< const Byte > buffer, const String &name)=0
Lit et analyse le fichier XML contenu dans le buffer buffer.
Gestionnaire d'un document DOM.
Vue d'un tableau d'éléments de type T.
Definition Span.h:513
Chaîne de caractères unicode.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
Definition UtilsTypes.h:208
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:563