GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: tmp_project/DataStream/src/data_stream_message.cpp Lines: 235 235 100.0 %
Date: 2024-12-09 15:30:52 Branches: 7 11 63.6 %

Line Branch Exec Source
1
/***************************************
2
	Auteur : Pierre Aubert
3
	Mail : pierre.aubert@lapp.in2p3.fr
4
	Licence : CeCILL-C
5
****************************************/
6
7
8
#include "data_stream_message.h"
9
10
11
///Read the bool in the message
12
/**	@param[out] ds : message to be read
13
* 	@param[out] data : data to be set
14
* 	@return true on success, false otherwise
15
*/
16
1
bool DataStream<char*, DataStreamMode::READ, bool>::data_stream(char* & ds, bool & data){
17
1
	char* srcByte = (char*)&data;
18
1
	memcpy(srcByte, ds, sizeof(bool));
19
1
	ds += sizeof(bool);
20
1
	return true;
21
}
22
23
///Read the bool in the message
24
/**	@param[out] ds : message to be read
25
* 	@param[out] data : data to be set
26
* 	@param nbElement : number of element of the data
27
* 	@return true on success, false otherwise
28
*/
29
98
bool DataStream<char*, DataStreamMode::READ, bool>::data_stream(char* & ds, bool * data, size_t nbElement){
30
98
	char* srcByte = (char*)data;
31
98
	memcpy(srcByte, ds, sizeof(bool)*nbElement);
32
98
	ds += sizeof(bool)*nbElement;
33
98
	return true;
34
}
35
36
///Save the bool in the message
37
/**	@param[out] ds : message to be written
38
* 	@param data : data to be saved in the message
39
* 	@return true on success, false otherwise
40
*/
41
1
bool DataStream<char*, DataStreamMode::WRITE, bool>::data_stream(char* & ds, bool & data){
42
1
	const char* srcByte = (const char*)&data;
43
1
	memcpy(ds, srcByte, sizeof(bool));
44
1
	ds += sizeof(bool);
45
1
	return true;
46
}
47
48
///Save the bool in the message
49
/**	@param[out] ds : message to be written
50
* 	@param data : data to be saved in the message
51
* 	@param nbElement : number of element of the data
52
* 	@return true on success, false otherwise
53
*/
54
98
bool DataStream<char*, DataStreamMode::WRITE, bool>::data_stream(char* & ds, bool * data, size_t nbElement){
55
98
	const char* srcByte = (const char*)data;
56
98
	memcpy(ds, srcByte, sizeof(bool)*nbElement);
57
98
	ds += sizeof(bool)*nbElement;
58
98
	return true;
59
}
60
61
///Read the char in the message
62
/**	@param[out] ds : message to be read
63
* 	@param[out] data : data to be set
64
* 	@return true on success, false otherwise
65
*/
66
61
bool DataStream<char*, DataStreamMode::READ, char>::data_stream(char* & ds, char & data){
67
61
	char* srcByte = (char*)&data;
68
61
	memcpy(srcByte, ds, sizeof(char));
69
61
	ds += sizeof(char);
70
61
	return true;
71
}
72
73
///Read the char in the message
74
/**	@param[out] ds : message to be read
75
* 	@param[out] data : data to be set
76
* 	@param nbElement : number of element of the data
77
* 	@return true on success, false otherwise
78
*/
79
98
bool DataStream<char*, DataStreamMode::READ, char>::data_stream(char* & ds, char * data, size_t nbElement){
80
98
	char* srcByte = (char*)data;
81
98
	memcpy(srcByte, ds, sizeof(char)*nbElement);
82
98
	ds += sizeof(char)*nbElement;
83
98
	return true;
84
}
85
86
///Save the char in the message
87
/**	@param[out] ds : message to be written
88
* 	@param data : data to be saved in the message
89
* 	@return true on success, false otherwise
90
*/
91
60
bool DataStream<char*, DataStreamMode::WRITE, char>::data_stream(char* & ds, char & data){
92
60
	const char* srcByte = (const char*)&data;
93
60
	memcpy(ds, srcByte, sizeof(char));
94
60
	ds += sizeof(char);
95
60
	return true;
96
}
97
98
///Save the char in the message
99
/**	@param[out] ds : message to be written
100
* 	@param data : data to be saved in the message
101
* 	@param nbElement : number of element of the data
102
* 	@return true on success, false otherwise
103
*/
104
98
bool DataStream<char*, DataStreamMode::WRITE, char>::data_stream(char* & ds, char * data, size_t nbElement){
105
98
	const char* srcByte = (const char*)data;
106
98
	memcpy(ds, srcByte, sizeof(char)*nbElement);
107
98
	ds += sizeof(char)*nbElement;
108
98
	return true;
109
}
110
111
///Read the short in the message
112
/**	@param[out] ds : message to be read
113
* 	@param[out] data : data to be set
114
* 	@return true on success, false otherwise
115
*/
116
61
bool DataStream<char*, DataStreamMode::READ, short>::data_stream(char* & ds, short & data){
117
61
	char* srcByte = (char*)&data;
118
61
	memcpy(srcByte, ds, sizeof(short));
119
61
	ds += sizeof(short);
120
61
	return true;
121
}
122
123
///Read the short in the message
124
/**	@param[out] ds : message to be read
125
* 	@param[out] data : data to be set
126
* 	@param nbElement : number of element of the data
127
* 	@return true on success, false otherwise
128
*/
129
98
bool DataStream<char*, DataStreamMode::READ, short>::data_stream(char* & ds, short * data, size_t nbElement){
130
98
	char* srcByte = (char*)data;
131
98
	memcpy(srcByte, ds, sizeof(short)*nbElement);
132
98
	ds += sizeof(short)*nbElement;
133
98
	return true;
134
}
135
136
///Save the short in the message
137
/**	@param[out] ds : message to be written
138
* 	@param data : data to be saved in the message
139
* 	@return true on success, false otherwise
140
*/
141
60
bool DataStream<char*, DataStreamMode::WRITE, short>::data_stream(char* & ds, short & data){
142
60
	const char* srcByte = (const char*)&data;
143
60
	memcpy(ds, srcByte, sizeof(short));
144
60
	ds += sizeof(short);
145
60
	return true;
146
}
147
148
///Save the short in the message
149
/**	@param[out] ds : message to be written
150
* 	@param data : data to be saved in the message
151
* 	@param nbElement : number of element of the data
152
* 	@return true on success, false otherwise
153
*/
154
98
bool DataStream<char*, DataStreamMode::WRITE, short>::data_stream(char* & ds, short * data, size_t nbElement){
155
98
	const char* srcByte = (const char*)data;
156
98
	memcpy(ds, srcByte, sizeof(short)*nbElement);
157
98
	ds += sizeof(short)*nbElement;
158
98
	return true;
159
}
160
161
///Read the int in the message
162
/**	@param[out] ds : message to be read
163
* 	@param[out] data : data to be set
164
* 	@return true on success, false otherwise
165
*/
166
62
bool DataStream<char*, DataStreamMode::READ, int>::data_stream(char* & ds, int & data){
167
62
	char* srcByte = (char*)&data;
168
62
	memcpy(srcByte, ds, sizeof(int));
169
62
	ds += sizeof(int);
170
62
	return true;
171
}
172
173
///Read the int in the message
174
/**	@param[out] ds : message to be read
175
* 	@param[out] data : data to be set
176
* 	@param nbElement : number of element of the data
177
* 	@return true on success, false otherwise
178
*/
179
98
bool DataStream<char*, DataStreamMode::READ, int>::data_stream(char* & ds, int * data, size_t nbElement){
180
98
	char* srcByte = (char*)data;
181
98
	memcpy(srcByte, ds, sizeof(int)*nbElement);
182
98
	ds += sizeof(int)*nbElement;
183
98
	return true;
184
}
185
186
///Save the int in the message
187
/**	@param[out] ds : message to be written
188
* 	@param data : data to be saved in the message
189
* 	@return true on success, false otherwise
190
*/
191
64
bool DataStream<char*, DataStreamMode::WRITE, int>::data_stream(char* & ds, int & data){
192
64
	const char* srcByte = (const char*)&data;
193
64
	memcpy(ds, srcByte, sizeof(int));
194
64
	ds += sizeof(int);
195
64
	return true;
196
}
197
198
///Save the int in the message
199
/**	@param[out] ds : message to be written
200
* 	@param data : data to be saved in the message
201
* 	@param nbElement : number of element of the data
202
* 	@return true on success, false otherwise
203
*/
204
98
bool DataStream<char*, DataStreamMode::WRITE, int>::data_stream(char* & ds, int * data, size_t nbElement){
205
98
	const char* srcByte = (const char*)data;
206
98
	memcpy(ds, srcByte, sizeof(int)*nbElement);
207
98
	ds += sizeof(int)*nbElement;
208
98
	return true;
209
}
210
211
///Read the long int in the message
212
/**	@param[out] ds : message to be read
213
* 	@param[out] data : data to be set
214
* 	@return true on success, false otherwise
215
*/
216
61
bool DataStream<char*, DataStreamMode::READ, long int>::data_stream(char* & ds, long int & data){
217
61
	char* srcByte = (char*)&data;
218
61
	memcpy(srcByte, ds, sizeof(long int));
219
61
	ds += sizeof(long int);
220
61
	return true;
221
}
222
223
///Read the long int in the message
224
/**	@param[out] ds : message to be read
225
* 	@param[out] data : data to be set
226
* 	@param nbElement : number of element of the data
227
* 	@return true on success, false otherwise
228
*/
229
98
bool DataStream<char*, DataStreamMode::READ, long int>::data_stream(char* & ds, long int * data, size_t nbElement){
230
98
	char* srcByte = (char*)data;
231
98
	memcpy(srcByte, ds, sizeof(long int)*nbElement);
232
98
	ds += sizeof(long int)*nbElement;
233
98
	return true;
234
}
235
236
///Save the long int in the message
237
/**	@param[out] ds : message to be written
238
* 	@param data : data to be saved in the message
239
* 	@return true on success, false otherwise
240
*/
241
61
bool DataStream<char*, DataStreamMode::WRITE, long int>::data_stream(char* & ds, long int & data){
242
61
	const char* srcByte = (const char*)&data;
243
61
	memcpy(ds, srcByte, sizeof(long int));
244
61
	ds += sizeof(long int);
245
61
	return true;
246
}
247
248
///Save the long int in the message
249
/**	@param[out] ds : message to be written
250
* 	@param data : data to be saved in the message
251
* 	@param nbElement : number of element of the data
252
* 	@return true on success, false otherwise
253
*/
254
98
bool DataStream<char*, DataStreamMode::WRITE, long int>::data_stream(char* & ds, long int * data, size_t nbElement){
255
98
	const char* srcByte = (const char*)data;
256
98
	memcpy(ds, srcByte, sizeof(long int)*nbElement);
257
98
	ds += sizeof(long int)*nbElement;
258
98
	return true;
259
}
260
261
///Read the unsigned char in the message
262
/**	@param[out] ds : message to be read
263
* 	@param[out] data : data to be set
264
* 	@return true on success, false otherwise
265
*/
266
61
bool DataStream<char*, DataStreamMode::READ, unsigned char>::data_stream(char* & ds, unsigned char & data){
267
61
	char* srcByte = (char*)&data;
268
61
	memcpy(srcByte, ds, sizeof(unsigned char));
269
61
	ds += sizeof(unsigned char);
270
61
	return true;
271
}
272
273
///Read the unsigned char in the message
274
/**	@param[out] ds : message to be read
275
* 	@param[out] data : data to be set
276
* 	@param nbElement : number of element of the data
277
* 	@return true on success, false otherwise
278
*/
279
98
bool DataStream<char*, DataStreamMode::READ, unsigned char>::data_stream(char* & ds, unsigned char * data, size_t nbElement){
280
98
	char* srcByte = (char*)data;
281
98
	memcpy(srcByte, ds, sizeof(unsigned char)*nbElement);
282
98
	ds += sizeof(unsigned char)*nbElement;
283
98
	return true;
284
}
285
286
///Save the unsigned char in the message
287
/**	@param[out] ds : message to be written
288
* 	@param data : data to be saved in the message
289
* 	@return true on success, false otherwise
290
*/
291
60
bool DataStream<char*, DataStreamMode::WRITE, unsigned char>::data_stream(char* & ds, unsigned char & data){
292
60
	const char* srcByte = (const char*)&data;
293
60
	memcpy(ds, srcByte, sizeof(unsigned char));
294
60
	ds += sizeof(unsigned char);
295
60
	return true;
296
}
297
298
///Save the unsigned char in the message
299
/**	@param[out] ds : message to be written
300
* 	@param data : data to be saved in the message
301
* 	@param nbElement : number of element of the data
302
* 	@return true on success, false otherwise
303
*/
304
98
bool DataStream<char*, DataStreamMode::WRITE, unsigned char>::data_stream(char* & ds, unsigned char * data, size_t nbElement){
305
98
	const char* srcByte = (const char*)data;
306
98
	memcpy(ds, srcByte, sizeof(unsigned char)*nbElement);
307
98
	ds += sizeof(unsigned char)*nbElement;
308
98
	return true;
309
}
310
311
///Read the unsigned short in the message
312
/**	@param[out] ds : message to be read
313
* 	@param[out] data : data to be set
314
* 	@return true on success, false otherwise
315
*/
316
61
bool DataStream<char*, DataStreamMode::READ, unsigned short>::data_stream(char* & ds, unsigned short & data){
317
61
	char* srcByte = (char*)&data;
318
61
	memcpy(srcByte, ds, sizeof(unsigned short));
319
61
	ds += sizeof(unsigned short);
320
61
	return true;
321
}
322
323
///Read the unsigned short in the message
324
/**	@param[out] ds : message to be read
325
* 	@param[out] data : data to be set
326
* 	@param nbElement : number of element of the data
327
* 	@return true on success, false otherwise
328
*/
329
98
bool DataStream<char*, DataStreamMode::READ, unsigned short>::data_stream(char* & ds, unsigned short * data, size_t nbElement){
330
98
	char* srcByte = (char*)data;
331
98
	memcpy(srcByte, ds, sizeof(unsigned short)*nbElement);
332
98
	ds += sizeof(unsigned short)*nbElement;
333
98
	return true;
334
}
335
336
///Save the unsigned short in the message
337
/**	@param[out] ds : message to be written
338
* 	@param data : data to be saved in the message
339
* 	@return true on success, false otherwise
340
*/
341
60
bool DataStream<char*, DataStreamMode::WRITE, unsigned short>::data_stream(char* & ds, unsigned short & data){
342
60
	const char* srcByte = (const char*)&data;
343
60
	memcpy(ds, srcByte, sizeof(unsigned short));
344
60
	ds += sizeof(unsigned short);
345
60
	return true;
346
}
347
348
///Save the unsigned short in the message
349
/**	@param[out] ds : message to be written
350
* 	@param data : data to be saved in the message
351
* 	@param nbElement : number of element of the data
352
* 	@return true on success, false otherwise
353
*/
354
98
bool DataStream<char*, DataStreamMode::WRITE, unsigned short>::data_stream(char* & ds, unsigned short * data, size_t nbElement){
355
98
	const char* srcByte = (const char*)data;
356
98
	memcpy(ds, srcByte, sizeof(unsigned short)*nbElement);
357
98
	ds += sizeof(unsigned short)*nbElement;
358
98
	return true;
359
}
360
361
///Read the unsigned int in the message
362
/**	@param[out] ds : message to be read
363
* 	@param[out] data : data to be set
364
* 	@return true on success, false otherwise
365
*/
366
61
bool DataStream<char*, DataStreamMode::READ, unsigned int>::data_stream(char* & ds, unsigned int & data){
367
61
	char* srcByte = (char*)&data;
368
61
	memcpy(srcByte, ds, sizeof(unsigned int));
369
61
	ds += sizeof(unsigned int);
370
61
	return true;
371
}
372
373
///Read the unsigned int in the message
374
/**	@param[out] ds : message to be read
375
* 	@param[out] data : data to be set
376
* 	@param nbElement : number of element of the data
377
* 	@return true on success, false otherwise
378
*/
379
98
bool DataStream<char*, DataStreamMode::READ, unsigned int>::data_stream(char* & ds, unsigned int * data, size_t nbElement){
380
98
	char* srcByte = (char*)data;
381
98
	memcpy(srcByte, ds, sizeof(unsigned int)*nbElement);
382
98
	ds += sizeof(unsigned int)*nbElement;
383
98
	return true;
384
}
385
386
///Save the unsigned int in the message
387
/**	@param[out] ds : message to be written
388
* 	@param data : data to be saved in the message
389
* 	@return true on success, false otherwise
390
*/
391
63
bool DataStream<char*, DataStreamMode::WRITE, unsigned int>::data_stream(char* & ds, unsigned int & data){
392
63
	const char* srcByte = (const char*)&data;
393
63
	memcpy(ds, srcByte, sizeof(unsigned int));
394
63
	ds += sizeof(unsigned int);
395
63
	return true;
396
}
397
398
///Save the unsigned int in the message
399
/**	@param[out] ds : message to be written
400
* 	@param data : data to be saved in the message
401
* 	@param nbElement : number of element of the data
402
* 	@return true on success, false otherwise
403
*/
404
98
bool DataStream<char*, DataStreamMode::WRITE, unsigned int>::data_stream(char* & ds, unsigned int * data, size_t nbElement){
405
98
	const char* srcByte = (const char*)data;
406
98
	memcpy(ds, srcByte, sizeof(unsigned int)*nbElement);
407
98
	ds += sizeof(unsigned int)*nbElement;
408
98
	return true;
409
}
410
411
///Read the long unsigned int in the message
412
/**	@param[out] ds : message to be read
413
* 	@param[out] data : data to be set
414
* 	@return true on success, false otherwise
415
*/
416
95
bool DataStream<char*, DataStreamMode::READ, long unsigned int>::data_stream(char* & ds, long unsigned int & data){
417
95
	char* srcByte = (char*)&data;
418
95
	memcpy(srcByte, ds, sizeof(long unsigned int));
419
95
	ds += sizeof(long unsigned int);
420
95
	return true;
421
}
422
423
///Read the long unsigned int in the message
424
/**	@param[out] ds : message to be read
425
* 	@param[out] data : data to be set
426
* 	@param nbElement : number of element of the data
427
* 	@return true on success, false otherwise
428
*/
429
98
bool DataStream<char*, DataStreamMode::READ, long unsigned int>::data_stream(char* & ds, long unsigned int * data, size_t nbElement){
430
98
	char* srcByte = (char*)data;
431
98
	memcpy(srcByte, ds, sizeof(long unsigned int)*nbElement);
432
98
	ds += sizeof(long unsigned int)*nbElement;
433
98
	return true;
434
}
435
436
///Save the long unsigned int in the message
437
/**	@param[out] ds : message to be written
438
* 	@param data : data to be saved in the message
439
* 	@return true on success, false otherwise
440
*/
441
95
bool DataStream<char*, DataStreamMode::WRITE, long unsigned int>::data_stream(char* & ds, long unsigned int & data){
442
95
	const char* srcByte = (const char*)&data;
443
95
	memcpy(ds, srcByte, sizeof(long unsigned int));
444
95
	ds += sizeof(long unsigned int);
445
95
	return true;
446
}
447
448
///Save the long unsigned int in the message
449
/**	@param[out] ds : message to be written
450
* 	@param data : data to be saved in the message
451
* 	@param nbElement : number of element of the data
452
* 	@return true on success, false otherwise
453
*/
454
98
bool DataStream<char*, DataStreamMode::WRITE, long unsigned int>::data_stream(char* & ds, long unsigned int * data, size_t nbElement){
455
98
	const char* srcByte = (const char*)data;
456
98
	memcpy(ds, srcByte, sizeof(long unsigned int)*nbElement);
457
98
	ds += sizeof(long unsigned int)*nbElement;
458
98
	return true;
459
}
460
461
///Read the float in the message
462
/**	@param[out] ds : message to be read
463
* 	@param[out] data : data to be set
464
* 	@return true on success, false otherwise
465
*/
466
1
bool DataStream<char*, DataStreamMode::READ, float>::data_stream(char* & ds, float & data){
467
1
	char* srcByte = (char*)&data;
468
1
	memcpy(srcByte, ds, sizeof(float));
469
1
	ds += sizeof(float);
470
1
	return true;
471
}
472
473
///Read the float in the message
474
/**	@param[out] ds : message to be read
475
* 	@param[out] data : data to be set
476
* 	@param nbElement : number of element of the data
477
* 	@return true on success, false otherwise
478
*/
479
98
bool DataStream<char*, DataStreamMode::READ, float>::data_stream(char* & ds, float * data, size_t nbElement){
480
98
	char* srcByte = (char*)data;
481
98
	memcpy(srcByte, ds, sizeof(float)*nbElement);
482
98
	ds += sizeof(float)*nbElement;
483
98
	return true;
484
}
485
486
///Save the float in the message
487
/**	@param[out] ds : message to be written
488
* 	@param data : data to be saved in the message
489
* 	@return true on success, false otherwise
490
*/
491
1
bool DataStream<char*, DataStreamMode::WRITE, float>::data_stream(char* & ds, float & data){
492
1
	const char* srcByte = (const char*)&data;
493
1
	memcpy(ds, srcByte, sizeof(float));
494
1
	ds += sizeof(float);
495
1
	return true;
496
}
497
498
///Save the float in the message
499
/**	@param[out] ds : message to be written
500
* 	@param data : data to be saved in the message
501
* 	@param nbElement : number of element of the data
502
* 	@return true on success, false otherwise
503
*/
504
98
bool DataStream<char*, DataStreamMode::WRITE, float>::data_stream(char* & ds, float * data, size_t nbElement){
505
98
	const char* srcByte = (const char*)data;
506
98
	memcpy(ds, srcByte, sizeof(float)*nbElement);
507
98
	ds += sizeof(float)*nbElement;
508
98
	return true;
509
}
510
511
///Read the double in the message
512
/**	@param[out] ds : message to be read
513
* 	@param[out] data : data to be set
514
* 	@return true on success, false otherwise
515
*/
516
1
bool DataStream<char*, DataStreamMode::READ, double>::data_stream(char* & ds, double & data){
517
1
	char* srcByte = (char*)&data;
518
1
	memcpy(srcByte, ds, sizeof(double));
519
1
	ds += sizeof(double);
520
1
	return true;
521
}
522
523
///Read the double in the message
524
/**	@param[out] ds : message to be read
525
* 	@param[out] data : data to be set
526
* 	@param nbElement : number of element of the data
527
* 	@return true on success, false otherwise
528
*/
529
98
bool DataStream<char*, DataStreamMode::READ, double>::data_stream(char* & ds, double * data, size_t nbElement){
530
98
	char* srcByte = (char*)data;
531
98
	memcpy(srcByte, ds, sizeof(double)*nbElement);
532
98
	ds += sizeof(double)*nbElement;
533
98
	return true;
534
}
535
536
///Save the double in the message
537
/**	@param[out] ds : message to be written
538
* 	@param data : data to be saved in the message
539
* 	@return true on success, false otherwise
540
*/
541
1
bool DataStream<char*, DataStreamMode::WRITE, double>::data_stream(char* & ds, double & data){
542
1
	const char* srcByte = (const char*)&data;
543
1
	memcpy(ds, srcByte, sizeof(double));
544
1
	ds += sizeof(double);
545
1
	return true;
546
}
547
548
///Save the double in the message
549
/**	@param[out] ds : message to be written
550
* 	@param data : data to be saved in the message
551
* 	@param nbElement : number of element of the data
552
* 	@return true on success, false otherwise
553
*/
554
98
bool DataStream<char*, DataStreamMode::WRITE, double>::data_stream(char* & ds, double * data, size_t nbElement){
555
98
	const char* srcByte = (const char*)data;
556
98
	memcpy(ds, srcByte, sizeof(double)*nbElement);
557
98
	ds += sizeof(double)*nbElement;
558
98
	return true;
559
}
560
561
///Load a std::string from a message
562
/**	@param[out] ds : message iterator which contains std::string
563
* 	@param data : std::string to be loaded
564
* 	@return true on success, false otherwise
565
*/
566
2
bool DataStream<char*, DataStreamMode::READ, std::string>::data_stream(char* & ds, std::string & data){
567
2
	size_t nbElement(0lu);
568
2
	bool b = DataStream<char*, DataStreamMode::READ, size_t>::data_stream(ds, nbElement);
569

2
	if(nbElement == 0lu || !b){return b;}
570
2
	data.resize(nbElement);
571
2
	memcpy((char*)data.data(), ds, nbElement);
572
2
	ds += nbElement;
573
2
	return b;
574
}
575
576
577
///Save a std::string into a message
578
/**	@param[out] ds : message iterator to be written
579
* 	@param data : std::string to be saved
580
* 	@return true on success, false otherwise
581
*/
582
2
bool DataStream<char*, DataStreamMode::WRITE, std::string>::data_stream(char* & ds, std::string & data){
583
2
	size_t nbElement(data.size());
584
2
	bool b = DataStream<char*, DataStreamMode::WRITE, size_t>::data_stream(ds, nbElement);
585

2
	if(nbElement == 0lu || !b){return b;}
586
2
	memcpy(ds, (const char*)data.data(), nbElement);
587
2
	ds += nbElement;
588
2
	return b;
589
}
590
591