NAME¶
mtbl_varint - Variable-width encoding and decoding of 32 and 64 bit integers
SYNOPSIS¶
#include <mtbl.h>
unsigned mtbl_varint_length(uint64_t value);
unsigned mtbl_varint_length_packed(const uint8_t *buf,
size_t len_buf);
size_t mtbl_varint_encode32(uint8_t *ptr, uint32_t
value);
size_t mtbl_varint_encode64(uint8_t *ptr, uint64_t
value);
size_t mtbl_varint_decode32(const uint8_t *ptr, uint32_t
* value);
size_t mtbl_varint_decode64(const uint8_t *ptr, uint64_t
* value);
DESCRIPTION¶
mtbl_varint_encode32() and
mtbl_varint_encode64() write the 32 or
64 bit quantity, respectively, in the argument
value to the buffer in
the argument
dst. The quantity will be written in using a
variable-width encoding that uses at most 5 bytes for a 32 bit quantity or 10
bytes for a 64 bit quantity.
mtbl_varint_decode32() and
mtbl_varint_decode64() read the 32 or
64 bit varint quantity, respectively, in the argument
ptr. The quantity
read will be placed in the argument
value.
Bounds checking must be performed by the caller.
RETURN VALUE¶
mtbl_varint_encode32() and
mtbl_varint_encode64() return the
number of bytes written to
dst.
mtbl_varint_decode32() and
mtbl_varint_decode64() return the
number of bytes read from
ptr.
mtbl_varint_length() returns the number of bytes that its argument
value would require in the variable-width encoding.
mtbl_varint_length_packed() returns the number of bytes consumed by the
variable-width encoded quantity at its argument
data. It will read at
most
len_buf bytes from
data. The value 0 is returned if a valid
varint is not present.