BizHawk/ppsspp/native/util/bits/varint.cpp

36 lines
553 B
C++

#include "util/bits/varint.h"
namespace varint {
void Encode32(uint32_t value, char **dest) {
// Simple varint
char *p = *dest;
while (value > 127) {
*p++ = (value & 127);
value >>= 7;
}
*p++ = value | 0x80;
*dest = p;
}
uint32_t Decode32(const char **ptr) {
uint32_t value = 0;
const char *p = *ptr;
while (true) {
uint8 b = *p++;
if (b & 0x80) {
*ptr = p;
return value | (b & 0x7F);
} else {
value |= *p++;
value <<= 7;
}
}
*ptr = p;
return value;
}
} // namespace varint