GCC Code Coverage Report


Directory: ./
File: tmp_project/DataStream/src/data_stream_size.h
Date: 2024-12-09 11:00:39
Exec Total Coverage
Lines: 20 20 100.0%
Branches: 10 10 100.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #ifndef __DATA_STREAM_SIZE_H__
8 #define __DATA_STREAM_SIZE_H__
9
10 #include "data_stream_include.h"
11
12 ///@brief How to get size of a class
13 template<typename T>
14 struct DataStream<size_t, DataStreamMode::WRITE, std::vector<T> >{
15 ///Get the size of a class std::vector T
16 /** @param[out] ds : size of the class std::vector T
17 * @param data : data to be used
18 * @return true on success, false otherwise
19 */
20 64 static bool data_stream(size_t & ds, std::vector<T> & data){
21 64 ds += sizeof(size_t);
22
2/2
✓ Branch 4 taken 320 times.
✓ Branch 5 taken 32 times.
704 for(typename std::vector<T>::iterator it(data.begin()); it != data.end(); ++it){
23
1/1
✓ Branch 2 taken 320 times.
640 DataStream<size_t, DataStreamMode::WRITE, T>::data_stream(ds, *it);
24 }
25 64 return true;
26 }
27 };
28
29 ///@brief How to get size of a class
30 template<typename T>
31 struct DataStream<size_t, DataStreamMode::WRITE, std::list<T> >{
32 ///Get the size of a class std::list T
33 /** @param[out] ds : size of the class std::list T
34 * @param data : data to be used
35 * @return true on success, false otherwise
36 */
37 64 static bool data_stream(size_t & ds, std::list<T> & data){
38 64 ds += sizeof(size_t);
39
2/2
✓ Branch 4 taken 320 times.
✓ Branch 5 taken 32 times.
704 for(typename std::list<T>::iterator it(data.begin()); it != data.end(); ++it){
40
1/1
✓ Branch 2 taken 320 times.
640 DataStream<size_t, DataStreamMode::WRITE, T>::data_stream(ds, *it);
41 }
42 64 return true;
43 }
44 };
45
46 ///@brief How to get size of a class
47 template<typename T, typename U>
48 struct DataStream<size_t, DataStreamMode::WRITE, std::map<T, U> >{
49 ///Get the size of a class std::list T
50 /** @param[out] ds : size of the class std::map T U
51 * @param data : data to be used
52 * @return true on success, false otherwise
53 */
54 24 static bool data_stream(size_t & ds, std::map<T, U> & data){
55 24 ds += sizeof(size_t);
56
2/2
✓ Branch 4 taken 120 times.
✓ Branch 5 taken 12 times.
264 for(typename std::map<T, U>::iterator it(data.begin()); it != data.end(); ++it){
57
1/1
✓ Branch 2 taken 120 times.
240 DataStream<size_t, DataStreamMode::WRITE, T>::data_stream(ds, (T&)it->first);
58
1/1
✓ Branch 2 taken 120 times.
240 DataStream<size_t, DataStreamMode::WRITE, U>::data_stream(ds, it->second);
59 }
60 24 return true;
61 }
62 };
63
64 ///@brief How to get size of a class
65 template<typename T, typename U>
66 struct DataStream<size_t, DataStreamMode::WRITE, std::pair<T, U> >{
67 ///Get the size of a class std::list T
68 /** @param[out] ds : size of the class std::map T U
69 * @param data : data to be used
70 * @return true on success, false otherwise
71 */
72 320 static bool data_stream(size_t & ds, std::pair<T, U> & data){
73 320 DataStream<size_t, DataStreamMode::WRITE, T>::data_stream(ds, (T&)data.first);
74 320 DataStream<size_t, DataStreamMode::WRITE, U>::data_stream(ds, data.second);
75 320 return true;
76 }
77 };
78
79 ///@brief Specialisation to get the size of a bool
80 template<>
81 struct DataStream<size_t, DataStreamMode::WRITE, bool>{
82 static bool data_stream(size_t & ds, bool & data);
83 static bool data_stream(size_t & ds, bool * data, size_t nbElement);
84 };
85
86 ///@brief Specialisation to get the size of a char
87 template<>
88 struct DataStream<size_t, DataStreamMode::WRITE, char>{
89 static bool data_stream(size_t & ds, char & data);
90 static bool data_stream(size_t & ds, char * data, size_t nbElement);
91 };
92
93 ///@brief Specialisation to get the size of a short
94 template<>
95 struct DataStream<size_t, DataStreamMode::WRITE, short>{
96 static bool data_stream(size_t & ds, short & data);
97 static bool data_stream(size_t & ds, short * data, size_t nbElement);
98 };
99
100 ///@brief Specialisation to get the size of a int
101 template<>
102 struct DataStream<size_t, DataStreamMode::WRITE, int>{
103 static bool data_stream(size_t & ds, int & data);
104 static bool data_stream(size_t & ds, int * data, size_t nbElement);
105 };
106
107 ///@brief Specialisation to get the size of a long int
108 template<>
109 struct DataStream<size_t, DataStreamMode::WRITE, long int>{
110 static bool data_stream(size_t & ds, long int & data);
111 static bool data_stream(size_t & ds, long int * data, size_t nbElement);
112 };
113
114 ///@brief Specialisation to get the size of a unsigned char
115 template<>
116 struct DataStream<size_t, DataStreamMode::WRITE, unsigned char>{
117 static bool data_stream(size_t & ds, unsigned char & data);
118 static bool data_stream(size_t & ds, unsigned char * data, size_t nbElement);
119 };
120
121 ///@brief Specialisation to get the size of a unsigned short
122 template<>
123 struct DataStream<size_t, DataStreamMode::WRITE, unsigned short>{
124 static bool data_stream(size_t & ds, unsigned short & data);
125 static bool data_stream(size_t & ds, unsigned short * data, size_t nbElement);
126 };
127
128 ///@brief Specialisation to get the size of a unsigned int
129 template<>
130 struct DataStream<size_t, DataStreamMode::WRITE, unsigned int>{
131 static bool data_stream(size_t & ds, unsigned int & data);
132 static bool data_stream(size_t & ds, unsigned int * data, size_t nbElement);
133 };
134
135 ///@brief Specialisation to get the size of a long unsigned int
136 template<>
137 struct DataStream<size_t, DataStreamMode::WRITE, long unsigned int>{
138 static bool data_stream(size_t & ds, long unsigned int & data);
139 static bool data_stream(size_t & ds, long unsigned int * data, size_t nbElement);
140 };
141
142 ///@brief Specialisation to get the size of a float
143 template<>
144 struct DataStream<size_t, DataStreamMode::WRITE, float>{
145 static bool data_stream(size_t & ds, float & data);
146 static bool data_stream(size_t & ds, float * data, size_t nbElement);
147 };
148
149 ///@brief Specialisation to get the size of a double
150 template<>
151 struct DataStream<size_t, DataStreamMode::WRITE, double>{
152 static bool data_stream(size_t & ds, double & data);
153 static bool data_stream(size_t & ds, double * data, size_t nbElement);
154 };
155
156 ///@brief Specialisation to get the size of a std::string
157 template<>
158 struct DataStream<size_t, DataStreamMode::WRITE, std::string>{
159 static bool data_stream(size_t & ds, std::string & data);
160 };
161
162 #endif
163
164