A C++ template library for embedded applications
MIT licensed
Designed and
maintained by
John Wellbelove
Support the development
of the ETL

byte_stream_writer

byte_stream_reader

20.17.0
A binary streaming utility that allows boolean, integral and floating point values to be written and read from an array of
char or unsigned char. By default, values are stored in the bit stream in network order (Big Endian). This can be
changed by specifying in the constructor.

class byte_stream_writer
class byte_stream_reader

Note for floating point
Be aware that floating point representation can change between platforms.
For example long double is 8 bytes for MS compilers and 12 for GCC.
____________________________________________________________________________________________________
Types
const_iterator   const char*


byte_stream_writer

____________________________________________________________________________________________________
Constructors

byte_stream_writer(etl::span<char> span, etl::endian buffer_endianness = etl::endian::big)
Construct from span.

byte_stream_writer(char* begin, char* end, etl::endian buffer_endianness = etl::endian::big)
Construct from range.

byte_stream_writer(char* begin, size_t length, etl::endian buffer_endianness = etl::endian::big)
Construct from begin and length.

template <typename T, size_t Size>
byte_stream_writer(T(&begin)[Size], etl::endian buffer_endianness = etl::endian::big)
Construct from array.
___________________________________________________________________________________________________
Write
bool write(bool value)
Writes a boolean to the stream
Returns true if successful, otherwise false.

template <typename T>
bool write(T value)
Write an integral value to the stream.
Returns true if successful, otherwise false.

template <typename T>
bool write(const etl::span<T>& range)
Write a range of T to the stream.
Returns true if successful, otherwise false.
____________________________________________________________________________________________________
Access

void restart(size_t n = 0U)
Sets the index back to position n in the stream. Default = 0.

const_iterator begin() const
Returns start of the stream.

const_iterator end() const
Returns end of the stream.

const_iterator cbegin() const
Returns start of the stream.

const_iterator cend() const
Returns end of the stream.

etl::span<char> used_data() const
Returns a span of the used portion of the stream.

etl::span<char> free_data() const
Returns a span of the free portion of the stream.

etl::span<char> data() const
Returns a span of whole the stream.
____________________________________________________________________________________________________
Status

bool full() const
Returns true if the byte stream index has reached the end.

bool empty() const
Returns true if the byte stream is empty.

size_t size_bytes() const
Returns the number of bytes used in the stream.

size_t capacity() const
Returns the maximum number of bytes in the stream.

template <typename T>
size_t available() const
The number of T left in the stream.

____________________________________________________________________________________________________

byte_stream_reader

____________________________________________________________________________________________________
Constructors

byte_stream_reader(etl::span<char> span, etl::endian buffer_endianness = etl::endian::big)
Construct from span.

byte_stream_reader(char* begin, char* end, etl::endian buffer_endianness = etl::endian::big)
Construct from range.

byte_stream_reader(char* begin, size_t length, etl::endian buffer_endianness = etl::endian::big)
Construct from begin and length.

template <typename T, size_t Size>
byte_stream_reader(T(&begin_)[Size], etl::endian buffer_endianness = etl::endian::big)
Construct from array.
___________________________________________________________________________________________________
Read

template <typename T>
etl::optional<T> read()
Read an integral value from the stream.

template <typename T>
etl::optional<etl::span<T>> read(size_t n)
Read a byte range from the stream.

template <typename T>
etl::optional<etl::span<T>> read(etl::span<T> range)
Read a range of T from the stream.

template <typename T>
bool skip(size_t n)
Skip n items of T, up to the maximum space available.

bool empty() const
Returns true if the byte stream is empty.

size_t size_bytes() const
Returns the number of bytes used in the stream.

template <typename T>
size_t available() const
The number of T left in the stream.
____________________________________________________________________________________________________
Access

void restart(size_t n = 0U)
Sets the index back to position n in the stream. Default = 0.

const_iterator begin() const
Returns start of the stream.

const_iterator end() const
Returns end of the stream.

const_iterator cbegin() const
Returns start of the stream.

const_iterator cend() const
Returns end of the stream.

etl::span<char> used_data() const
Returns a span of the used portion of the stream.

etl::span<char> free_data() const
Returns a span of the free portion of the stream.

etl::span<char> data() const
Returns a span of whole the stream.
byte_stream.h