| 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 |