Data compression

Variable length integers

typedef uint32_t ulib_varint

Unsigned variable-length integer type.

This type can be controlled through the ULIB_VARINT_TYPE preprocessor definition.

typedef int32_t ulib_svarint

Signed variable-length integer type.

This type can be controlled through the ULIB_SVARINT_TYPE preprocessor definition.

ulib_ret uistream_read_varint(UIStream *stream, ulib_varint *value, size_t *read)

Reads a variable-length unsigned integer.

Parameters:
  • stream – Input stream.

  • value[out] Decoded value.

  • read[out] Number of bytes read.

Returns:

Return code.

ulib_ret uistream_read_svarint(UIStream *stream, ulib_svarint *value, size_t *read)

Reads a variable-length signed integer.

Parameters:
  • stream – Input stream.

  • value[out] Decoded value.

  • read[out] Number of bytes read.

Returns:

Return code.

ulib_ret uostream_write_varint(UOStream *stream, ulib_varint value, size_t *written)

Writes a variable-length unsigned integer.

Parameters:
  • stream – Output stream.

  • value – Value to encode.

  • written[out] Number of bytes written.

Returns:

Return code.

ulib_ret uostream_write_svarint(UOStream *stream, ulib_svarint value, size_t *written)

Writes a variable-length signed integer.

Parameters:
  • stream – Output stream.

  • value – Value to encode.

  • written[out] Number of bytes written.

Returns:

Return code.