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