6#include "nalchi/bit_stream.hpp"
8#include "nalchi/export.hpp"
157 std::int8_t min, std::int8_t max);
165 std::uint8_t min, std::uint8_t max);
173 std::int16_t min, std::int16_t max);
181 std::uint16_t min, std::uint16_t max);
189 std::int32_t min, std::int32_t max);
197 std::uint32_t min, std::uint32_t max);
205 std::int64_t min, std::int64_t max);
213 std::uint64_t min, std::uint64_t max);
467 std::int8_t min, std::int8_t max);
475 std::uint8_t min, std::uint8_t max);
483 std::int16_t min, std::int16_t max);
491 std::uint16_t min, std::uint16_t max);
499 std::int32_t min, std::int32_t max);
507 std::uint32_t min, std::uint32_t max);
515 std::int64_t min, std::int64_t max);
523 std::uint64_t min, std::uint64_t max);
nalchi::bit_stream_writer * nalchi_bit_stream_writer_construct_with_shared_payload(nalchi::shared_payload buffer, nalchi::bit_stream_writer::size_type logical_bytes_length)
Constructs a bit_stream_writer instance with a shared_payload buffer.
auto nalchi_bit_stream_writer_total_bytes(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of total bytes in the stream.
void nalchi_bit_stream_measurer_write_utf16_string(nalchi::bit_stream_measurer *self, const char16_t *str)
Fake-writes a null-terminated UTF-16 string to the bit stream.
bool nalchi_bit_stream_writer_flush_final(nalchi::bit_stream_writer *self)
Flushes the last remaining bytes on the internal scratch buffer to your buffer.
bool nalchi_bit_stream_reader_read_float(nalchi::bit_stream_reader *self, float *data)
Reads a float value from the bit stream.
bool nalchi_bit_stream_writer_fail(const nalchi::bit_stream_writer *self)
Check if writing to your buffer has been failed or not.
auto nalchi_bit_stream_reader_used_bits(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of used bits in the stream.
bool nalchi_bit_stream_reader_read_u8(nalchi::bit_stream_reader *self, std::uint8_t *data, std::uint8_t min, std::uint8_t max)
Reads a std::uint8_t value from the bit stream.
void nalchi_bit_stream_measurer_write_u8(nalchi::bit_stream_measurer *self, std::uint8_t data, std::uint8_t min, std::uint8_t max)
Fake-writes a std::uint8_t value to the bit stream.
nalchi::bit_stream_reader * nalchi_bit_stream_reader_construct_with_word_ptr_and_length(const nalchi::bit_stream_reader::word_type *begin, nalchi::bit_stream_reader::size_type words_length, nalchi::bit_stream_reader::size_type logical_bytes_length)
Constructs a bit_stream_reader instance with a word begin pointer and the word length.
bool nalchi_bit_stream_reader_read_wide_string(nalchi::bit_stream_reader *self, wchar_t *str, nalchi::bit_stream_reader::size_type max_length)
Reads a null-terminated wide string from the bit stream.
bool nalchi_bit_stream_reader_read_u32(nalchi::bit_stream_reader *self, std::uint32_t *data, std::uint32_t min, std::uint32_t max)
Reads a std::uint32_t value from the bit stream.
bool nalchi_bit_stream_reader_read_s32(nalchi::bit_stream_reader *self, std::int32_t *data, std::int32_t min, std::int32_t max)
Reads a std::int32_t value from the bit stream.
bool nalchi_bit_stream_reader_read_utf32_string(nalchi::bit_stream_reader *self, char32_t *str, nalchi::bit_stream_reader::size_type max_length)
Reads a null-terminated UTF-32 string from the bit stream.
bool nalchi_bit_stream_reader_read_s8(nalchi::bit_stream_reader *self, std::int8_t *data, std::int8_t min, std::int8_t max)
Reads a std::int8_t value from the bit stream.
void nalchi_bit_stream_writer_reset_with_shared_payload(nalchi::bit_stream_writer *self, nalchi::shared_payload buffer, nalchi::bit_stream_writer::size_type logical_bytes_length)
Resets the stream with a shared_payload buffer.
void nalchi_bit_stream_writer_reset_with_word_range(nalchi::bit_stream_writer *self, nalchi::bit_stream_writer::word_type *begin, nalchi::bit_stream_writer::word_type *end, nalchi::bit_stream_writer::size_type logical_bytes_length)
Resets the stream with a word range.
auto nalchi_bit_stream_reader_total_bytes(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of total bytes in the stream.
nalchi::bit_stream_measurer * nalchi_bit_stream_measurer_construct()
Constructs a bit_stream_measurer instance.
void nalchi_bit_stream_writer_reset(nalchi::bit_stream_writer *self)
Resets the stream so that it no longer holds your buffer anymore.
void nalchi_bit_stream_measurer_write_s32(nalchi::bit_stream_measurer *self, std::int32_t data, std::int32_t min, std::int32_t max)
Fake-writes a std::int32_t value to the bit stream.
nalchi::bit_stream_writer * nalchi_bit_stream_writer_construct_with_word_ptr_and_length(nalchi::bit_stream_writer::word_type *begin, nalchi::bit_stream_writer::size_type words_length, nalchi::bit_stream_writer::size_type logical_bytes_length)
Constructs a bit_stream_writer instance with a word begin pointer and the word length.
auto nalchi_bit_stream_writer_unused_bytes(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of unused bytes in the stream.
auto nalchi_bit_stream_writer_unused_bits(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of unused bits in the stream.
void nalchi_bit_stream_measurer_restart(nalchi::bit_stream_measurer *self)
Restarts the measure from zero.
void nalchi_bit_stream_reader_reset(nalchi::bit_stream_reader *self)
Resets the stream so that it no longer holds your buffer anymore.
bool nalchi_bit_stream_reader_read_bytes(nalchi::bit_stream_reader *self, void *data, nalchi::bit_stream_reader::size_type size)
Reads some arbitrary data from the bit stream.
bool nalchi_bit_stream_writer_flushed(const nalchi::bit_stream_writer *self)
Checks if flush_final() has been called or not.
void nalchi_bit_stream_measurer_write_u16(nalchi::bit_stream_measurer *self, std::uint16_t data, std::uint16_t min, std::uint16_t max)
Fake-writes a std::uint16_t value to the bit stream.
bool nalchi_bit_stream_reader_read_u64(nalchi::bit_stream_reader *self, std::uint64_t *data, std::uint64_t min, std::uint64_t max)
Reads a std::uint64_t value from the bit stream.
bool nalchi_bit_stream_reader_read_s64(nalchi::bit_stream_reader *self, std::int64_t *data, std::int64_t min, std::int64_t max)
Reads a std::int64_t value from the bit stream.
auto nalchi_bit_stream_writer_used_bits(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of used bits in the stream.
nalchi::bit_stream_reader * nalchi_bit_stream_reader_construct_default()
Constructs a bit_stream_reader instance without a buffer.
auto nalchi_bit_stream_measurer_used_bits(const nalchi::bit_stream_measurer *self) -> nalchi::bit_stream_measurer::size_type
Gets the number of used (measured) bits.
auto nalchi_bit_stream_reader_unused_bytes(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of unused bytes in the stream.
void nalchi_bit_stream_measurer_write_bool(nalchi::bit_stream_measurer *self, bool data)
Fake-writes an bool value to the bit stream.
void nalchi_bit_stream_reader_reset_with_word_range(nalchi::bit_stream_reader *self, const nalchi::bit_stream_reader::word_type *begin, const nalchi::bit_stream_reader::word_type *end, nalchi::bit_stream_reader::size_type logical_bytes_length)
Resets the stream with a word range.
auto nalchi_bit_stream_measurer_used_bytes(const nalchi::bit_stream_measurer *self) -> nalchi::bit_stream_measurer::size_type
Gets the number of used (measured) bytes.
nalchi::bit_stream_writer * nalchi_bit_stream_writer_construct_default()
Constructs a bit_stream_writer instance without a buffer.
void nalchi_bit_stream_writer_restart(nalchi::bit_stream_writer *self)
Restarts the stream so that it can write from the beginning again.
void nalchi_bit_stream_writer_set_fail(nalchi::bit_stream_writer *self)
Force set the fail flag.
void nalchi_bit_stream_measurer_write_s16(nalchi::bit_stream_measurer *self, std::int16_t data, std::int16_t min, std::int16_t max)
Fake-writes a std::int16_t value to the bit stream.
void nalchi_bit_stream_reader_destroy(nalchi::bit_stream_reader *self)
Destroys the bit_stream_reader instance.
void nalchi_bit_stream_measurer_write_float(nalchi::bit_stream_measurer *self, float data)
Fake-writes a float value to the bit stream.
void nalchi_bit_stream_measurer_write_double(nalchi::bit_stream_measurer *self, double data)
Fake-writes a double value to the bit stream.
nalchi::bit_stream_reader * nalchi_bit_stream_reader_construct_with_word_range(const nalchi::bit_stream_reader::word_type *begin, const nalchi::bit_stream_reader::word_type *end, nalchi::bit_stream_reader::size_type logical_bytes_length)
Constructs a bit_stream_reader instance with a word range.
auto nalchi_bit_stream_writer_total_bits(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of total bits in the stream.
void nalchi_bit_stream_measurer_write_u64(nalchi::bit_stream_measurer *self, std::uint64_t data, std::uint64_t min, std::uint64_t max)
Fake-writes a std::uint64_t value to the bit stream.
void nalchi_bit_stream_measurer_destroy(nalchi::bit_stream_measurer *self)
Destroys a bit_stream_measurer instance.
auto nalchi_bit_stream_reader_peek_string_length(nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::ssize_type
Peeks the string length prefix from the current stream position.
bool nalchi_bit_stream_writer_write_u8(nalchi::bit_stream_writer *self, std::uint8_t data, std::uint8_t min, std::uint8_t max)
Writes a std::uint8_t value to the bit stream.
void nalchi_bit_stream_reader_reset_with_word_ptr_and_length(nalchi::bit_stream_reader *self, const nalchi::bit_stream_reader::word_type *begin, nalchi::bit_stream_reader::size_type words_length, nalchi::bit_stream_reader::size_type logical_bytes_length)
Resets the stream with a word begin pointer and the word length.
void nalchi_bit_stream_measurer_write_s8(nalchi::bit_stream_measurer *self, std::int8_t data, std::int8_t min, std::int8_t max)
Fake-writes a std::int8_t value to the bit stream.
void nalchi_bit_stream_measurer_write_ordinary_string(nalchi::bit_stream_measurer *self, const char *str)
Fake-writes a null-terminated ordinary string to the bit stream.
void nalchi_bit_stream_reader_restart(nalchi::bit_stream_reader *self)
Restarts the stream so that it can read from the beginning again.
bool nalchi_bit_stream_writer_write_u16(nalchi::bit_stream_writer *self, std::uint16_t data, std::uint16_t min, std::uint16_t max)
Writes a std::uint16_t value to the bit stream.
nalchi::bit_stream_writer * nalchi_bit_stream_writer_construct_with_word_range(nalchi::bit_stream_writer::word_type *begin, nalchi::bit_stream_writer::word_type *end, nalchi::bit_stream_writer::size_type logical_bytes_length)
Constructs a bit_stream_writer instance with a word range.
void nalchi_bit_stream_measurer_write_u32(nalchi::bit_stream_measurer *self, std::uint32_t data, std::uint32_t min, std::uint32_t max)
Fake-writes a std::uint32_t value to the bit stream.
void nalchi_bit_stream_measurer_write_s64(nalchi::bit_stream_measurer *self, std::int64_t data, std::int64_t min, std::int64_t max)
Fake-writes a std::int64_t value to the bit stream.
bool nalchi_bit_stream_writer_write_s8(nalchi::bit_stream_writer *self, std::int8_t data, std::int8_t min, std::int8_t max)
Writes a std::int8_t value to the bit stream.
bool nalchi_bit_stream_writer_write_bytes(nalchi::bit_stream_writer *self, const void *data, nalchi::bit_stream_writer::size_type size)
Writes some arbitrary data to the bit stream.
bool nalchi_bit_stream_writer_write_wide_string(nalchi::bit_stream_writer *self, const wchar_t *str)
Writes a null-terminated wide string to the bit stream.
bool nalchi_bit_stream_writer_write_bool(nalchi::bit_stream_writer *self, bool data)
Writes a bool value to the bit stream.
bool nalchi_bit_stream_writer_write_float(nalchi::bit_stream_writer *self, float data)
Writes a float value to the bit stream.
bool nalchi_bit_stream_writer_write_u32(nalchi::bit_stream_writer *self, std::uint32_t data, std::uint32_t min, std::uint32_t max)
Writes a std::uint32_t value to the bit stream.
bool nalchi_bit_stream_reader_read_u16(nalchi::bit_stream_reader *self, std::uint16_t *data, std::uint16_t min, std::uint16_t max)
Reads a std::uint16_t value from the bit stream.
void nalchi_bit_stream_writer_destroy(nalchi::bit_stream_writer *self)
Destroys the bit_stream_writer instance.
bool nalchi_bit_stream_reader_fail(const nalchi::bit_stream_reader *self)
Check if reading from your buffer has been failed or not.
auto nalchi_bit_stream_reader_unused_bits(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of unused bits in the stream.
void nalchi_bit_stream_reader_set_fail(nalchi::bit_stream_reader *self)
Force set the fail flag.
bool nalchi_bit_stream_writer_write_utf8_string(nalchi::bit_stream_writer *self, const char8_t *str)
Writes a null-terminated UTF-8 string to the bit stream.
bool nalchi_bit_stream_writer_write_s32(nalchi::bit_stream_writer *self, std::int32_t data, std::int32_t min, std::int32_t max)
Writes a std::int32_t value to the bit stream.
bool nalchi_bit_stream_reader_read_bool(nalchi::bit_stream_reader *self, bool *data)
Reads a bool value from the bit stream.
bool nalchi_bit_stream_writer_write_u64(nalchi::bit_stream_writer *self, std::uint64_t data, std::uint64_t min, std::uint64_t max)
Writes a std::uint64_t value to the bit stream.
bool nalchi_bit_stream_writer_write_ordinary_string(nalchi::bit_stream_writer *self, const char *str)
Writes a null-terminated ordinary string to the bit stream.
bool nalchi_bit_stream_reader_read_utf16_string(nalchi::bit_stream_reader *self, char16_t *str, nalchi::bit_stream_reader::size_type max_length)
Reads a null-terminated UTF-16 string from the bit stream.
bool nalchi_bit_stream_writer_write_utf16_string(nalchi::bit_stream_writer *self, const char16_t *str)
Writes a null-terminated UTF-16 string to the bit stream.
bool nalchi_bit_stream_reader_read_s16(nalchi::bit_stream_reader *self, std::int16_t *data, std::int16_t min, std::int16_t max)
Reads a std::int16_t value from the bit stream.
void nalchi_bit_stream_measurer_write_utf32_string(nalchi::bit_stream_measurer *self, const char32_t *str)
Fake-writes a null-terminated UTF-32 string to the bit stream.
void nalchi_bit_stream_measurer_write_bytes(nalchi::bit_stream_measurer *self, const void *data, nalchi::bit_stream_measurer::size_type size)
Fake-writes some arbitrary data to the bit stream.
bool nalchi_bit_stream_writer_write_s16(nalchi::bit_stream_writer *self, std::int16_t data, std::int16_t min, std::int16_t max)
Writes a std::int16_t value to the bit stream.
void nalchi_bit_stream_measurer_write_wide_string(nalchi::bit_stream_measurer *self, const wchar_t *str)
Fake-writes a null-terminated wide string to the bit stream.
bool nalchi_bit_stream_reader_read_utf8_string(nalchi::bit_stream_reader *self, char8_t *str, nalchi::bit_stream_reader::size_type max_length)
Reads a null-terminated UTF-8 string from the bit stream.
bool nalchi_bit_stream_reader_read_double(nalchi::bit_stream_reader *self, double *data)
Reads a double value from the bit stream.
bool nalchi_bit_stream_reader_read_ordinary_string(nalchi::bit_stream_reader *self, char *str, nalchi::bit_stream_reader::size_type max_length)
Reads a null-terminated ordinary string from the bit stream.
auto nalchi_bit_stream_reader_used_bytes(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of used bytes in the stream.
bool nalchi_bit_stream_writer_write_double(nalchi::bit_stream_writer *self, double data)
Writes a double value to the bit stream.
bool nalchi_bit_stream_writer_write_utf32_string(nalchi::bit_stream_writer *self, const char32_t *str)
Writes a null-terminated UTF-32 string to the bit stream.
auto nalchi_bit_stream_reader_total_bits(const nalchi::bit_stream_reader *self) -> nalchi::bit_stream_reader::size_type
Gets the number of total bits in the stream.
bool nalchi_bit_stream_writer_write_s64(nalchi::bit_stream_writer *self, std::int64_t data, std::int64_t min, std::int64_t max)
Writes a std::int64_t value to the bit stream.
void nalchi_bit_stream_writer_reset_with_word_ptr_and_length(nalchi::bit_stream_writer *self, nalchi::bit_stream_writer::word_type *begin, nalchi::bit_stream_writer::size_type words_length, nalchi::bit_stream_writer::size_type logical_bytes_length)
Resets the stream with a word begin pointer and the word length.
auto nalchi_bit_stream_writer_used_bytes(const nalchi::bit_stream_writer *self) -> nalchi::bit_stream_writer::size_type
Gets the number of used bytes in the stream.
void nalchi_bit_stream_measurer_write_utf8_string(nalchi::bit_stream_measurer *self, const char8_t *str)
Fake-writes a null-terminated UTF-8 string to the bit stream.
Measures the bytes bit_stream_writer will use.
Definition bit_stream.hpp:555
bit_stream_writer::size_type size_type
Size type representing number of bits and bytes.
Definition bit_stream.hpp:557
Helper stream to read bits from your buffer.
Definition bit_stream.hpp:708
bit_stream_writer::word_type word_type
Internal word type used to read from your buffer.
Definition bit_stream.hpp:715
bit_stream_writer::size_type size_type
Size type representing number of bits and bytes.
Definition bit_stream.hpp:710
std::make_signed_t< size_type > ssize_type
Signed size type to allow negative error value.
Definition bit_stream.hpp:711
Helper stream to write bits to your buffer.
Definition bit_stream.hpp:90
std::uint32_t size_type
Size type representing number of bits and bytes.
Definition bit_stream.hpp:92
std::uint32_t word_type
Internal word type used to write to your buffer.
Definition bit_stream.hpp:95
Shared payload to store data to send.
Definition shared_payload.hpp:20