/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
App/include/util/VarInt.h
48 строк
1007 B
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
#pragma once #include "Network/api.h" namespace RBX { template<int WindowSize=4> struct VarInt { static const unsigned char kDataMask = (1 << WindowSize) - 1; static const unsigned char kFlagMask = (1 << WindowSize); template<class OutputStream> static void encode(OutputStream& out, unsigned int count) { RBXASSERT(WindowSize < 8); do { unsigned char data = count & kDataMask; count >>= WindowSize; if (count) { data |= kFlagMask; } out.WriteBits(&data, WindowSize + 1); } while (count); } template<class InputStream> static void decode(InputStream& in, unsigned int* out) { RBXASSERT(WindowSize < 8); unsigned int count = 0; (*out) = 0; unsigned char data; do { data = 0; in.ReadBits(&data, WindowSize + 1); // TODO: The streaming.h include needs to be moved for it to be used here. // // Network::readFastN<WindowSize + 1>( in, data ); (*out) |= (data & kDataMask) << (WindowSize * count); count++; } while (data & kFlagMask); } }; }