59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
#pragma once
|
|
|
|
/**
|
|
* \file VarInt.h
|
|
* \brief File containing the td::VarInt class
|
|
*/
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
namespace td {
|
|
|
|
class DataBuffer;
|
|
|
|
/**
|
|
* \class VarInt
|
|
* \brief Variable-length format such that smaller numbers use fewer bytes.
|
|
*/
|
|
class VarInt {
|
|
private:
|
|
std::uint64_t m_Value;
|
|
|
|
public:
|
|
VarInt() : m_Value(0) {}
|
|
/**
|
|
* \brief Construct a variable integer from a value
|
|
* \param value The value of the variable integer
|
|
*/
|
|
VarInt(std::uint64_t value) : m_Value(value) {}
|
|
|
|
/**
|
|
* \brief Get the value of the variable integer
|
|
*/
|
|
std::uint64_t GetValue() const {
|
|
return m_Value;
|
|
}
|
|
|
|
/**
|
|
* \brief Get the length of the serialized variable integer
|
|
*/
|
|
std::size_t GetSerializedLength() const;
|
|
|
|
/**
|
|
* \brief Serialize the variable integer
|
|
* \param out The buffer to write the serialized variable integer to
|
|
* \param var The variable integer to serialize
|
|
*/
|
|
friend DataBuffer& operator<<(DataBuffer& out, const VarInt& var);
|
|
|
|
/**
|
|
* \brief Deserialize the variable integer
|
|
* \param in The buffer to read the serialized variable integer from
|
|
* \param var The variable integer to deserialize
|
|
*/
|
|
friend DataBuffer& operator>>(DataBuffer& in, VarInt& var);
|
|
};
|
|
|
|
} // namespace td
|