14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/Iostream.h"
17#include "arcane/utils/Array.h"
18#include "arcane/utils/PlatformUtils.h"
19#include "arcane/utils/ITraceMng.h"
20#include "arcane/utils/CheckedConvert.h"
22#include "arcane/IApplication.h"
23#include "arcane/DomUtils.h"
24#include "arcane/XmlNode.h"
25#include "arcane/IIOMng.h"
26#include "arcane/IParallelSuperMng.h"
27#include "arcane/IParallelMng.h"
28#include "arcane/IXmlDocumentHolder.h"
58 bool collectiveRead(
const String& filename,
ByteArray& bytes,
bool is_binary)
override;
63 bool localRead(
const String& filename,
ByteArray& bytes,
bool is_binary)
override;
72 template <
typename ParallelMngType>
bool
73 _collectiveRead(ParallelMngType* pm,
const String& filename,
ByteArray& bytes,
bool is_binary);
79extern "C++" ARCANE_IMPL_EXPORT IIOMng*
80arcaneCreateIOMng(IParallelMng* pm)
85extern "C++" ARCANE_IMPL_EXPORT IIOMng*
86arcaneCreateIOMng(IParallelSuperMng* psm)
88 return new IOMng(psm);
95IOMng(IParallelMng* pm)
97, m_parallel_super_mng(nullptr)
98, m_thread_mng(pm->threadMng())
99, m_trace_mng(pm->traceMng())
108: m_parallel_mng(nullptr)
109, m_parallel_super_mng(psm)
110, m_thread_mng(psm->threadMng())
111, m_trace_mng(psm->application()->traceMng())
131 std::ofstream ofile(filename.
localstr());
137 Integer indented = to_indent ? 1 : -1;
161 return domimp.
_load(filename, m_trace_mng, schemaname, schema_data);
190 ByteConstSpan buffer(
reinterpret_cast<const std::byte*
>(utf8_buf.
data()), utf8_buf.
size());
192 return domimp.
_load(buffer, name, m_trace_mng);
198template <
typename ParallelMngType>
200_collectiveRead(ParallelMngType* pm,
const String& filename,
ByteArray& bytes,
bool is_binary)
206 if (pm->commRank() == 0) {
207 if (!
localRead(filename, bytes, is_binary)) {
214 pm->broadcast(bs, 0);
219 pm->broadcast(bytes, 0);
220 return bytes.
empty();
230 return _collectiveRead(m_parallel_mng, filename, bytes, is_binary);
231 return _collectiveRead(m_parallel_super_mng, filename, bytes, is_binary);
Integer size() const
Nombre d'éléments du vecteur.
bool empty() const
Capacité (nombre d'éléments alloués) du vecteur.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
constexpr const_pointer data() const noexcept
Pointeur sur la mémoire allouée.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Interface du gestionnaire des entrées sorties.
IXmlDocumentHolder * parseXmlBuffer(Span< const Byte > buffer, const String &name) override
Lit et analyse le fichier XML contenu dans le buffer buffer.
bool localRead(const String &filename, ByteArray &bytes) override
Lecture locale d'un fichier.
IXmlDocumentHolder * parseXmlString(const String &str, const String &name) override
Lit et analyse le fichier XML contenu dans la chaîne str.
bool collectiveRead(const String &filename, ByteArray &bytes) override
Lecture collective d'un fichier.
bool writeXmlFile(IXmlDocumentHolder *doc, const String &filename, const bool indented) override
Ecrit l'arbre XML du document doc dans le fichier filename.
IXmlDocumentHolder * parseXmlFile(const String &filename, const String &schemaname=String()) override
Lit et analyse le fichier XML filename.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Classe abstraite du superviseur de parallélisme.
Interface d'un gestionnaire de thread.
Interface du gestionnaire de traces.
Gestionnaire d'un document DOM.
static IXmlDocumentHolder * loadFromBuffer(Span< const Byte > buffer, const String &name, ITraceMng *tm)
Charge un document XML.
virtual XmlNode documentNode()=0
Noeud document. Ce noeud est nul si le document n'existe pas.
static IXmlDocumentHolder * loadFromFile(const String &filename, ITraceMng *tm)
Charge un document XML.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
ByteConstArrayView utf8() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
dom::Node domNode() const
IXmlDocumentHolder * _load(const String &fname, ITraceMng *msg, const String &schemaname)
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.