Skip to content

Commit 7332904

Browse files
Merge pull request #1158 from arcaneframework/dev/gg-simplify-usage-of-text-reader-writer-v2
Simplify usage of TextReader2 and TextWriter2
2 parents ead04d1 + c69877a commit 7332904

File tree

6 files changed

+36
-45
lines changed

6 files changed

+36
-45
lines changed

arcane/src/arcane/std/BasicGenericReader.cc

+6-7
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
#include "arcane/core/ISerializedData.h"
2828
#include "arcane/core/XmlNodeList.h"
2929

30-
#include "arcane/std/internal/TextReader2.h"
31-
3230
/*---------------------------------------------------------------------------*/
3331
/*---------------------------------------------------------------------------*/
3432

@@ -230,24 +228,25 @@ readItemGroup(const String& group_full_name, Int64Array& written_unique_ids,
230228
}
231229
return;
232230
}
231+
233232
info(5) << "READ GROUP " << group_full_name;
234233
String filename = BasicReaderWriterCommon::_getBasicGroupFile(m_path, group_full_name, m_rank);
235-
TextReader2 reader(filename);
234+
std::ifstream reader(filename.localstr(), std::ios::in | std::ios::binary);
236235

237236
{
238237
Integer nb_unique_id = 0;
239-
reader.readIntegers(IntegerArrayView(1, &nb_unique_id));
238+
binaryRead(reader,asWritableBytes(SmallSpan<Integer>(&nb_unique_id, 1)));
240239
info(5) << "NB_WRITTEN_UNIQUE_ID = " << nb_unique_id;
241240
written_unique_ids.resize(nb_unique_id);
242-
reader.read(asWritableBytes(written_unique_ids.span()));
241+
binaryRead(reader,asWritableBytes(written_unique_ids.span()));
243242
}
244243

245244
{
246245
Integer nb_unique_id = 0;
247-
reader.readIntegers(IntegerArrayView(1, &nb_unique_id));
246+
binaryRead(reader,asWritableBytes(SmallSpan<Integer>(&nb_unique_id, 1)));
248247
info(5) << "NB_WANTED_UNIQUE_ID = " << nb_unique_id;
249248
wanted_unique_ids.resize(nb_unique_id);
250-
reader.read(asWritableBytes(wanted_unique_ids.span()));
249+
binaryRead(reader,asWritableBytes(wanted_unique_ids.span()));
251250
}
252251
}
253252

arcane/src/arcane/std/BasicGenericWriter.cc

+5-7
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
#include "arcane/core/ISerializedData.h"
2626
#include "arcane/core/IRessourceMng.h"
2727

28-
#include "arcane/std/internal/TextWriter2.h"
29-
3028
/*---------------------------------------------------------------------------*/
3129
/*---------------------------------------------------------------------------*/
3230

@@ -119,20 +117,20 @@ writeItemGroup(const String& group_full_name, SmallSpan<const Int64> written_uni
119117
}
120118

121119
String filename = BasicReaderWriterCommon::_getBasicGroupFile(m_path, group_full_name, m_rank);
122-
TextWriter2 writer(filename);
120+
ofstream writer(filename.localstr(),std::ios::out | std::ios::binary);
123121

124122
// Sauve la liste des unique_ids écrits
125123
{
126124
Integer nb_unique_id = written_unique_ids.size();
127-
writer.write(asBytes(Span<const Int32>(&nb_unique_id, 1)));
128-
writer.write(asBytes(written_unique_ids));
125+
binaryWrite(writer,asBytes(Span<const Int32>(&nb_unique_id, 1)));
126+
binaryWrite(writer,asBytes(written_unique_ids));
129127
}
130128

131129
// Sauve la liste des unique_ids souhaités par ce sous-domaine
132130
{
133131
Integer nb_unique_id = wanted_unique_ids.size();
134-
writer.write(asBytes(Span<const Int32>(&nb_unique_id, 1)));
135-
writer.write(asBytes(wanted_unique_ids));
132+
binaryWrite(writer,asBytes(Span<const Int32>(&nb_unique_id, 1)));
133+
binaryWrite(writer,asBytes(wanted_unique_ids));
136134
}
137135
}
138136

arcane/src/arcane/std/TextReader2.cc

+10-9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "arcane/utils/Ref.h"
2020
#include "arcane/utils/FatalErrorException.h"
2121
#include "arcane/utils/IDataCompressor.h"
22+
#include "arcane/utils/FixedArray.h"
2223

2324
#include "arcane/core/ArcaneException.h"
2425

@@ -103,28 +104,28 @@ void TextReader2::
103104
read(Span<std::byte> values)
104105
{
105106
Int64 nb_value = values.size();
106-
_binaryRead(values.data(), nb_value);
107+
_binaryRead(values);
107108
_checkStream("byte[]", nb_value);
108109
}
109110

110111
/*---------------------------------------------------------------------------*/
111112
/*---------------------------------------------------------------------------*/
112113

113114
void TextReader2::
114-
_binaryRead(void* values, Int64 len)
115+
_binaryRead(Span<std::byte> values)
115116
{
116117
std::istream& s = m_p->m_istream;
117118
IDataCompressor* d = m_p->m_data_compressor.get();
118-
if (d && len > d->minCompressSize()) {
119+
if (d && values.size() > d->minCompressSize()) {
119120
UniqueArray<std::byte> compressed_values;
120-
Int64 compressed_size = 0;
121-
s.read((char*)&compressed_size, sizeof(Int64));
122-
compressed_values.resize(compressed_size);
123-
s.read((char*)compressed_values.data(), compressed_size);
124-
m_p->m_data_compressor->decompress(compressed_values, Span<std::byte>((std::byte*)values, len));
121+
FixedArray<Int64, 1> compressed_size;
122+
binaryRead(s, asWritableBytes(compressed_size.span()));
123+
compressed_values.resize(compressed_size[0]);
124+
binaryRead(s, asWritableBytes(compressed_values));
125+
m_p->m_data_compressor->decompress(compressed_values, values);
125126
}
126127
else {
127-
s.read((char*)values, len);
128+
binaryRead(s, values);
128129
}
129130
}
130131

arcane/src/arcane/std/TextWriter2.cc

+12-18
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,7 @@ TextWriter2::
4949
TextWriter2(const String& filename)
5050
: m_p(new Impl())
5151
{
52-
open(filename);
53-
}
54-
55-
/*---------------------------------------------------------------------------*/
56-
/*---------------------------------------------------------------------------*/
57-
58-
TextWriter2::
59-
TextWriter2()
60-
: m_p(new Impl())
61-
{
52+
_open(filename);
6253
}
6354

6455
/*---------------------------------------------------------------------------*/
@@ -74,7 +65,7 @@ TextWriter2::
7465
/*---------------------------------------------------------------------------*/
7566

7667
void TextWriter2::
77-
open(const String& filename)
68+
_open(const String& filename)
7869
{
7970
m_p->m_filename = filename;
8071
std::ios::openmode mode = std::ios::out | std::ios::binary;
@@ -90,7 +81,7 @@ open(const String& filename)
9081
void TextWriter2::
9182
write(Span<const std::byte> values)
9283
{
93-
_binaryWrite(values.data(), values.size());
84+
_binaryWrite(values);
9485
}
9586

9687
/*---------------------------------------------------------------------------*/
@@ -120,22 +111,25 @@ fileOffset()
120111
return m_p->m_ostream.tellp();
121112
}
122113

114+
/*---------------------------------------------------------------------------*/
115+
/*---------------------------------------------------------------------------*/
116+
123117
void TextWriter2::
124-
_binaryWrite(const void* bytes, Int64 len)
118+
_binaryWrite(Span<const std::byte> values)
125119
{
126120
std::ostream& o = m_p->m_ostream;
127121
//cout << "** BINARY WRITE len=" << len << " deflater=" << m_data_compressor << '\n';
128122
IDataCompressor* d = m_p->m_data_compressor.get();
129-
if (d && len > d->minCompressSize()) {
123+
if (d && values.size() > d->minCompressSize()) {
130124
UniqueArray<std::byte> compressed_values;
131-
m_p->m_data_compressor->compress(Span<const std::byte>((const std::byte*)bytes, len), compressed_values);
125+
m_p->m_data_compressor->compress(values, compressed_values);
132126
Int64 compressed_size = compressed_values.largeSize();
133-
o.write((const char*)&compressed_size, sizeof(Int64));
134-
o.write((const char*)compressed_values.data(), compressed_size);
127+
binaryWrite(o, asBytes(SmallSpan<Int64>(&compressed_size, 1)));
128+
binaryWrite(o, compressed_values);
135129
//cout << "** BINARY WRITE len=" << len << " compressed_len=" << compressed_size << '\n';
136130
}
137131
else
138-
o.write((const char*)bytes, len);
132+
binaryWrite(o, values);
139133
}
140134

141135
/*---------------------------------------------------------------------------*/

arcane/src/arcane/std/internal/TextReader2.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class TextReader2
6565

6666
private:
6767

68-
void _binaryRead(void* bytes, Int64 len);
68+
void _binaryRead(Span<std::byte> values);
6969
void _checkStream(const char* type, Int64 nb_read_value);
7070
};
7171

arcane/src/arcane/std/internal/TextWriter2.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,11 @@ class TextWriter2
4242

4343
explicit TextWriter2(const String& filename);
4444
TextWriter2(const TextWriter2& rhs) = delete;
45-
TextWriter2();
4645
~TextWriter2();
4746
TextWriter2& operator=(const TextWriter2& rhs) = delete;
4847

4948
public:
5049

51-
void open(const String& filename);
5250
void write(Span<const std::byte> values);
5351

5452
public:
@@ -65,7 +63,8 @@ class TextWriter2
6563

6664
private:
6765

68-
void _binaryWrite(const void* bytes, Int64 len);
66+
void _open(const String& filename);
67+
void _binaryWrite(Span<const std::byte> values);
6968
};
7069

7170
/*---------------------------------------------------------------------------*/

0 commit comments

Comments
 (0)