GCC Code Coverage Report


Directory: ./
File: src/Representation/phoenix_data_stream_pstring.cpp
Date: 2025-03-14 12:18:05
Exec Total Coverage
Lines: 18 29 62.1%
Branches: 9 29 31.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "phoenix_data_stream_pstring.h"
8
9 ///Load a PString from a file
10 /** @param[out] ds : file iterator which contains PString
11 * @param data : PString to be loaded
12 * @return true on success, false otherwise
13 */
14 bool DataStream<FILE*, DataStreamMode::READ, PString>::data_stream(FILE* & ds, PString & data){
15 size_t nbElement(0lu);
16 bool b = DataStream<FILE*, DataStreamMode::READ, size_t>::data_stream(ds, nbElement);
17 if(nbElement == 0lu || !b){return b;}
18 data.resize(nbElement);
19 return fread((void*)data.data(), sizeof(char), nbElement, ds) == nbElement;
20 }
21
22
23 ///Save a PString into a file
24 /** @param[out] ds : file iterator to be written
25 * @param data : PString to be saved
26 * @return true on success, false otherwise
27 */
28 bool DataStream<FILE*, DataStreamMode::WRITE, PString>::data_stream(FILE* & ds, PString & data){
29 size_t nbElement(data.size());
30 bool b = DataStream<FILE*, DataStreamMode::WRITE, size_t>::data_stream(ds, nbElement);
31 if(nbElement == 0lu || !b){return b;}
32 return fwrite(data.data(), sizeof(char), nbElement, ds) == nbElement;
33 }
34
35 ///Get the size of a PString
36 /** @param[out] ds : size of the PString
37 * @param data : data to be used
38 * @return true on success, false otherwise
39 */
40 50 bool DataStream<size_t, DataStreamMode::WRITE, PString>::data_stream(size_t & ds, PString & data){
41 50 ds += data.size() + sizeof(size_t); //Number of char + sizeof(size_t) to store the number of char
42 50 return true;
43 }
44
45 ///Load a PString from a message
46 /** @param[out] ds : message iterator which contains PString
47 * @param data : PString to be loaded
48 * @return true on success, false otherwise
49 */
50 25 bool DataStream<DataStreamIter, DataStreamMode::READ, PString>::data_stream(DataStreamIter & ds, PString & data){
51 25 size_t nbElement(0lu);
52
1/1
✓ Branch 1 taken 25 times.
25 bool b = DataStream<DataStreamIter, DataStreamMode::READ, size_t>::data_stream(ds, nbElement);
53
3/4
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
25 if(nbElement == 0lu || !b){return b;}
54
1/1
✓ Branch 1 taken 3 times.
3 data.resize(nbElement);
55 3 memcpy((DataStreamIter)data.data(), ds, nbElement);
56 3 ds += nbElement;
57 3 return b;
58 }
59
60
61 ///Save a PString into a message
62 /** @param[out] ds : message iterator to be written
63 * @param data : PString to be saved
64 * @return true on success, false otherwise
65 */
66 50 bool DataStream<DataStreamIter, DataStreamMode::WRITE, PString>::data_stream(DataStreamIter & ds, PString & data){
67 50 size_t nbElement(data.size());
68
1/1
✓ Branch 1 taken 50 times.
50 bool b = DataStream<DataStreamIter, DataStreamMode::WRITE, size_t>::data_stream(ds, nbElement);
69
3/4
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 14 times.
50 if(nbElement == 0lu || !b){return b;}
70 14 memcpy(ds, (const DataStreamIter)data.data(), nbElement);
71 14 ds += nbElement;
72 14 return b;
73 }
74
75