PhoenixProtocolBuffer
1.0.1
Set of tools to decode offset from protocol buffer
Loading...
Searching...
No Matches
phoenix_varint.cpp
Go to the documentation of this file.
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
12
15
size_t
phoenix_varIntToValue
(
const
std::vector<uint8_t> & vecBitSize){
16
size_t
res(0lu), factor(1lu), nbByte(vecBitSize.size());
17
for
(
size_t
i(0lu); i < nbByte; ++i){
18
size_t
value(vecBitSize[i]);
19
res += value * factor;
20
factor *= 128lu;
21
}
22
return
res;
23
}
24
26
29
size_t
phoenix_readVarInt
(
char
* & iter){
30
std::vector<uint8_t> vecBitSize;
31
bool
isExtraByte(
false
);
32
do
{
33
char
packedSizeVal = *iter;
34
uint8_t val = packedSizeVal & 127;
35
vecBitSize.push_back(val);
//Get the first 7 bytes
36
isExtraByte = packedSizeVal & 128;
//Get only the strong bit
37
iter += 1lu;
38
}
while
(isExtraByte);
39
return
phoenix_varIntToValue
(vecBitSize);
40
}
41
43
45
void
phoenix_skipVarInt
(
char
* & iter){
46
bool
isExtraByte(
false
);
47
do
{
48
char
packedSizeVal = *iter;
49
isExtraByte = packedSizeVal & 128;
//Get only the strong bit
50
iter += 1lu;
51
}
while
(isExtraByte);
52
}
53
54
phoenix_varIntToValue
size_t phoenix_varIntToValue(const std::vector< uint8_t > &vecBitSize)
Convert a varint into a value.
Definition
phoenix_varint.cpp:15
phoenix_readVarInt
size_t phoenix_readVarInt(char *&iter)
Reads and print a varint from protocol buffer.
Definition
phoenix_varint.cpp:29
phoenix_skipVarInt
void phoenix_skipVarInt(char *&iter)
Skips a varint.
Definition
phoenix_varint.cpp:45
phoenix_varint.h
src
phoenix_varint.cpp
Generated by
1.13.2