Skip to content
modkitv0.2

codec.h

#include <modkit/codec.h>42 functions · 4 structs · 4 typedefs

Bounded binary readers and writers for stable portable formats.

Functions

mk_reader_consumedfunction

size_t mk_reader_consumed(const mk_reader_t *reader)

Get the number of decoded bytes.

ParameterTypeDescription
readerconst mk_reader_t *Reader to inspect.

Returns Number of bytes consumed.

mk_reader_initfunction

void mk_reader_init(mk_reader_t *reader, const void *data, size_t size)

Initialize a reader over a borrowed byte span.

ParameterTypeDescription
readermk_reader_t *Reader to initialize.
dataconst void *Source bytes.
sizesize_tSource size in bytes.

mk_reader_okfunction

bool mk_reader_ok(const mk_reader_t *reader)

Test whether every reader operation has succeeded.

ParameterTypeDescription
readerconst mk_reader_t *Reader to inspect.

Returns True when the reader has not failed.

mk_reader_read_boolfunction

bool mk_reader_read_bool(mk_reader_t *reader, bool *value)

Decode a boolean value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valuebool *Receives the value.

Returns True on success.

mk_reader_read_bytesfunction

bool mk_reader_read_bytes(mk_reader_t *reader, void *data, size_t size)

Copy unframed bytes into a caller buffer.

ParameterTypeDescription
readermk_reader_t *Source reader.
datavoid *Destination buffer.
sizesize_tByte count.

Returns True on success.

mk_reader_read_f32function

bool mk_reader_read_f32(mk_reader_t *reader, float *value)

Decode an IEEE-754 32-bit little-endian float.

ParameterTypeDescription
readermk_reader_t *Source reader.
valuefloat *Receives the value.

Returns True on success.

mk_reader_read_f64function

bool mk_reader_read_f64(mk_reader_t *reader, double *value)

Decode an IEEE-754 64-bit little-endian float.

ParameterTypeDescription
readermk_reader_t *Source reader.
valuedouble *Receives the value.

Returns True on success.

mk_reader_read_i16function

bool mk_reader_read_i16(mk_reader_t *reader, int16_t *value)

Decode a signed 16-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueint16_t *Receives the value.

Returns True on success.

mk_reader_read_i32function

bool mk_reader_read_i32(mk_reader_t *reader, int32_t *value)

Decode a signed 32-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueint32_t *Receives the value.

Returns True on success.

mk_reader_read_i64function

bool mk_reader_read_i64(mk_reader_t *reader, int64_t *value)

Decode a signed 64-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueint64_t *Receives the value.

Returns True on success.

mk_reader_read_i8function

bool mk_reader_read_i8(mk_reader_t *reader, int8_t *value)

Decode a signed 8-bit value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueint8_t *Receives the value.

Returns True on success.

mk_reader_read_spanfunction

bool mk_reader_read_span(mk_reader_t *reader, mk_bytes_view_t *value)

Decode a length-prefixed byte span without copying.

ParameterTypeDescription
readermk_reader_t *Source reader.
valuemk_bytes_view_t *Receives a borrowed span.

Returns True on success.

mk_reader_read_stringfunction

bool mk_reader_read_string(mk_reader_t *reader, mk_string_view_t *value)

Decode and validate a length-prefixed UTF-8 string without copying.

ParameterTypeDescription
readermk_reader_t *Source reader.
valuemk_string_view_t *Receives a borrowed string view.

Returns True on success.

mk_reader_read_u16function

bool mk_reader_read_u16(mk_reader_t *reader, uint16_t *value)

Decode an unsigned 16-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueuint16_t *Receives the value.

Returns True on success.

mk_reader_read_u32function

bool mk_reader_read_u32(mk_reader_t *reader, uint32_t *value)

Decode an unsigned 32-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueuint32_t *Receives the value.

Returns True on success.

mk_reader_read_u64function

bool mk_reader_read_u64(mk_reader_t *reader, uint64_t *value)

Decode an unsigned 64-bit little-endian value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueuint64_t *Receives the value.

Returns True on success.

mk_reader_read_u8function

bool mk_reader_read_u8(mk_reader_t *reader, uint8_t *value)

Decode an unsigned 8-bit value.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueuint8_t *Receives the value.

Returns True on success.

mk_reader_read_var_i64function

bool mk_reader_read_var_i64(mk_reader_t *reader, int64_t *value)

Decode a zigzag-encoded signed variable-length integer.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueint64_t *Receives the value.

Returns True on success.

mk_reader_read_var_u64function

bool mk_reader_read_var_u64(mk_reader_t *reader, uint64_t *value)

Decode an unsigned variable-length integer.

ParameterTypeDescription
readermk_reader_t *Source reader.
valueuint64_t *Receives the value.

Returns True on success.

mk_reader_remainingfunction

size_t mk_reader_remaining(const mk_reader_t *reader)

Get the number of unread bytes.

ParameterTypeDescription
readerconst mk_reader_t *Reader to inspect.

Returns Number of bytes remaining.

mk_writer_datafunction

const void * mk_writer_data(const mk_writer_t *writer)

Get the start of the encoded data.

ParameterTypeDescription
writerconst mk_writer_t *Writer to inspect.

Returns The borrowed destination-buffer pointer.

mk_writer_initfunction

void mk_writer_init(mk_writer_t *writer, void *data, size_t capacity)

Initialize a writer over a caller-owned buffer.

ParameterTypeDescription
writermk_writer_t *Writer to initialize.
datavoid *Destination buffer.
capacitysize_tBuffer size in bytes.

mk_writer_okfunction

bool mk_writer_ok(const mk_writer_t *writer)

Test whether every writer operation has succeeded.

ParameterTypeDescription
writerconst mk_writer_t *Writer to inspect.

Returns True when the writer has not failed.

mk_writer_remainingfunction

size_t mk_writer_remaining(const mk_writer_t *writer)

Get the unused buffer capacity.

ParameterTypeDescription
writerconst mk_writer_t *Writer to inspect.

Returns Number of writable bytes remaining.

mk_writer_sizefunction

size_t mk_writer_size(const mk_writer_t *writer)

Get the encoded byte count.

ParameterTypeDescription
writerconst mk_writer_t *Writer to inspect.

Returns Number of bytes written.

mk_writer_write_boolfunction

bool mk_writer_write_bool(mk_writer_t *writer, bool value)

Encode a boolean value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueboolValue to encode.

Returns True on success.

mk_writer_write_bytesfunction

bool mk_writer_write_bytes(mk_writer_t *writer, const void *data, size_t size)

Append unframed bytes.

ParameterTypeDescription
writermk_writer_t *Destination writer.
dataconst void *Bytes to append.
sizesize_tByte count.

Returns True on success.

mk_writer_write_f32function

bool mk_writer_write_f32(mk_writer_t *writer, float value)

Encode an IEEE-754 32-bit float in little-endian order.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valuefloatValue to encode.

Returns True on success.

mk_writer_write_f64function

bool mk_writer_write_f64(mk_writer_t *writer, double value)

Encode an IEEE-754 64-bit float in little-endian order.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valuedoubleValue to encode.

Returns True on success.

mk_writer_write_i16function

bool mk_writer_write_i16(mk_writer_t *writer, int16_t value)

Encode a signed 16-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueint16_tValue to encode.

Returns True on success.

mk_writer_write_i32function

bool mk_writer_write_i32(mk_writer_t *writer, int32_t value)

Encode a signed 32-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueint32_tValue to encode.

Returns True on success.

mk_writer_write_i64function

bool mk_writer_write_i64(mk_writer_t *writer, int64_t value)

Encode a signed 64-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueint64_tValue to encode.

Returns True on success.

mk_writer_write_i8function

bool mk_writer_write_i8(mk_writer_t *writer, int8_t value)

Encode a signed 8-bit value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueint8_tValue to encode.

Returns True on success.

mk_writer_write_spanfunction

bool mk_writer_write_span(mk_writer_t *writer, const void *data, size_t size)

Encode a length-prefixed byte span.

ParameterTypeDescription
writermk_writer_t *Destination writer.
dataconst void *Span bytes.
sizesize_tSpan length.

Returns True on success.

mk_writer_write_stringfunction

bool mk_writer_write_string(mk_writer_t *writer, const char *text)

Encode a length-prefixed null-terminated UTF-8 string.

ParameterTypeDescription
writermk_writer_t *Destination writer.
textconst char *UTF-8 string.

Returns True when the input is valid and fits.

mk_writer_write_string_nfunction

bool mk_writer_write_string_n(mk_writer_t *writer, const char *text, size_t size)

Encode a length-prefixed UTF-8 byte span.

ParameterTypeDescription
writermk_writer_t *Destination writer.
textconst char *UTF-8 bytes.
sizesize_tByte length.

Returns True when the input is valid and fits.

mk_writer_write_u16function

bool mk_writer_write_u16(mk_writer_t *writer, uint16_t value)

Encode an unsigned 16-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueuint16_tValue to encode.

Returns True on success.

mk_writer_write_u32function

bool mk_writer_write_u32(mk_writer_t *writer, uint32_t value)

Encode an unsigned 32-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueuint32_tValue to encode.

Returns True on success.

mk_writer_write_u64function

bool mk_writer_write_u64(mk_writer_t *writer, uint64_t value)

Encode an unsigned 64-bit little-endian value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueuint64_tValue to encode.

Returns True on success.

mk_writer_write_u8function

bool mk_writer_write_u8(mk_writer_t *writer, uint8_t value)

Encode an unsigned 8-bit value.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueuint8_tValue to encode.

Returns True on success.

mk_writer_write_var_i64function

bool mk_writer_write_var_i64(mk_writer_t *writer, int64_t value)

Encode a signed variable-length integer using zigzag encoding.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueint64_tValue to encode.

Returns True on success.

mk_writer_write_var_u64function

bool mk_writer_write_var_u64(mk_writer_t *writer, uint64_t value)

Encode an unsigned variable-length integer.

ParameterTypeDescription
writermk_writer_t *Destination writer.
valueuint64_tValue to encode.

Returns True on success.

Structs

mk_bytes_viewstruct

Borrowed view of a byte span decoded from a reader.

FieldTypeDescription
dataconst uint8_t *First byte in the span.
sizesize_tSpan length in bytes.

mk_readerstruct

Bounds-checked decoder over a borrowed byte span.

FieldTypeDescription
dataconst uint8_t *Source buffer.
sizesize_tSource buffer size in bytes.
positionsize_tNumber of bytes consumed.
failedboolSticky failure state.

mk_string_viewstruct

Borrowed view of validated UTF-8 decoded from a reader.

FieldTypeDescription
dataconst char *First UTF-8 byte; not necessarily null-terminated.
sizesize_tUTF-8 length in bytes.

mk_writerstruct

Bounds-checked encoder over a caller-owned byte buffer.

FieldTypeDescription
datauint8_t *Destination buffer.
capacitysize_tWritable buffer size in bytes.
positionsize_tNumber of bytes written.
failedboolSticky failure state.

Typedefs

mk_bytes_view_ttypedef

typedef struct mk_bytes_view mk_bytes_view_t

Borrowed view of a byte span decoded from a reader.

mk_reader_ttypedef

typedef struct mk_reader mk_reader_t

Bounds-checked decoder over a borrowed byte span.

mk_string_view_ttypedef

typedef struct mk_string_view mk_string_view_t

Borrowed view of validated UTF-8 decoded from a reader.

mk_writer_ttypedef

typedef struct mk_writer mk_writer_t

Bounds-checked encoder over a caller-owned byte buffer.