Crunch
A Message Definition Language for Getting Things Right
Loading...
Searching...
No Matches
Crunch::serdes::Varint Struct Reference

Utility for Varint encoding/decoding. More...

#include <crunch_varint.hpp>

Static Public Member Functions

static constexpr std::size_t encode (uint64_t value, std::span< std::byte > output, std::size_t offset) noexcept
 Encodes a value as a Varint.
 
static constexpr std::optional< std::pair< uint64_t, std::size_t > > decode (std::span< const std::byte > input, std::size_t offset) noexcept
 Decodes a Varint from a buffer.
 
static constexpr std::size_t size (uint64_t value) noexcept
 Calculates the size requirement for a value encoded as Varint.
 
static consteval std::size_t max_varint_size (std::size_t value_bits)
 Calculates the maximum varint size for a given number of bits.
 

Static Public Attributes

static constexpr std::size_t max_size = 10
 The maximum size required for a 64-bit integer encoded as Varint. ceil(64 / 7) = 10.
 

Detailed Description

Utility for Varint encoding/decoding.

Implemented as a header-only library to support constexpr evaluation.

Member Function Documentation

◆ decode()

static constexpr std::optional< std::pair< uint64_t, std::size_t > > Crunch::serdes::Varint::decode ( std::span< const std::byte >  input,
std::size_t  offset 
)
inlinestaticconstexprnoexcept

Decodes a Varint from a buffer.

Parameters
inputThe input buffer.
offsetThe offset to start reading from.
Returns
std::optional<std::pair<uint64_t, std::size_t>> The decoded value and bytes read, or nullopt on error.

◆ encode()

static constexpr std::size_t Crunch::serdes::Varint::encode ( uint64_t  value,
std::span< std::byte >  output,
std::size_t  offset 
)
inlinestaticconstexprnoexcept

Encodes a value as a Varint.

Parameters
valueThe value to encode.
outputThe output buffer.
offsetThe current offset in the buffer.
Returns
std::size_t The number of bytes written.

◆ max_varint_size()

static consteval std::size_t Crunch::serdes::Varint::max_varint_size ( std::size_t  value_bits)
inlinestatic

Calculates the maximum varint size for a given number of bits.

Parameters
value_bitsThe number of bits.
Returns
The maximum number of bytes required.

◆ size()

static constexpr std::size_t Crunch::serdes::Varint::size ( uint64_t  value)
inlinestaticconstexprnoexcept

Calculates the size requirement for a value encoded as Varint.

Parameters
valueThe value.
Returns
std::size_t The number of bytes required.

The documentation for this struct was generated from the following file: