GCC Code Coverage Report


Directory: ./
File: src/phoenix_varint.cpp
Date: 2026-01-15 15:40:41
Exec Total Coverage
Lines: 25 25 100.0%
Functions: 3 3 100.0%
Branches: 7 8 87.5%

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 "phoenix_varint.h"
9
10
11 ///Convert a varint into a value
12 /** @param vecBitSize : vector of bytes
13 * @return converted value
14 */
15 71 size_t phoenix_varIntToValue(const std::vector<uint8_t> & vecBitSize){
16 71 size_t res(0lu), factor(1lu), nbByte(vecBitSize.size());
17
2/2
✓ Branch 0 (6→4) taken 98 times.
✓ Branch 1 (6→7) taken 71 times.
169 for(size_t i(0lu); i < nbByte; ++i){
18 98 size_t value(vecBitSize[i]);
19 98 res += value * factor;
20 98 factor *= 128lu;
21 }
22 71 return res;
23 }
24
25 ///Reads and print a varint from protocol buffer
26 /** @param[out] iter : position on the current message to be used
27 * @return value of the varint
28 */
29 71 size_t phoenix_readVarInt(char* & iter){
30 71 std::vector<uint8_t> vecBitSize;
31 71 bool isExtraByte(false);
32 98 do{
33 98 char packedSizeVal = *iter;
34 98 uint8_t val = packedSizeVal & 127;
35
1/1
✓ Branch 0 (4→5) taken 98 times.
98 vecBitSize.push_back(val); //Get the first 7 bytes
36 98 isExtraByte = packedSizeVal & 128; //Get only the strong bit
37
2/2
✓ Branch 0 (5→6) taken 27 times.
✓ Branch 1 (5→7) taken 71 times.
98 iter += 1lu;
38 }while(isExtraByte);
39
1/1
✓ Branch 0 (7→8) taken 71 times.
142 return phoenix_varIntToValue(vecBitSize);
40 71 }
41
42 ///Skips a varint
43 /** @param[out] iter : iterator over the message to be used
44 */
45 4 void phoenix_skipVarInt(char* & iter){
46 4 bool isExtraByte(false);
47 4 do{
48 4 char packedSizeVal = *iter;
49 4 isExtraByte = packedSizeVal & 128; //Get only the strong bit
50
1/2
✗ Branch 0 (3→4) not taken.
✓ Branch 1 (3→5) taken 4 times.
4 iter += 1lu;
51 }while(isExtraByte);
52 4 }
53
54
55