byte_stream_reader
byte_stream_reader.hFrom:
20.17.0A binary streaming utility that allows boolean, integral and floating point values to be read from an array of char or unsigned char. By default, values are stored in the byte stream in network order (Big Endian). This can be changed by specifying in the constructor.
class byte_stream_readerNote for floating point: Be aware that floating point representations can change between platforms.
For example,long doubleis 8 bytes for MS compilers and 12 for GCC.
Types
iterator char*
const_iterator const char*Constructors
byte_stream_reader(etl::span<char> span, etl::endian stream_endianness)Description
Construct from span.
byte_stream_reader(etl::span<const char> span, etl::endian stream_endianness)Description
Construct from span.
byte_stream_reader(const void* begin, const void* end, etl::endian stream_endianness)Description
Construct from range.
byte_stream_reader(const void* begin, size_t length, etl::endian stream_endianness)Description
Construct from begin and length.
template <typename T, size_t Size>
byte_stream_reader(T(&begin)[Size], etl::endian stream_endianness)Description
Construct from array.
template <typename T, size_t Size>
byte_stream_reader(const T(&begin)[Size], etl::endian stream_endianness)Description
Construct from const array.
Read
Checked
The following functions will only read from the buffer if there is enough room to do so.
template <typename T>
etl::optional<T> read()Description
Read an integral value from the stream.
template <typename T>
etl::optional<etl::span<T>> read(size_t n)Description
Read a byte range from the stream.
template <typename T>
etl::optional<etl::span<const T>> read(etl::span<T> range)Description
Read a range of T from the stream.
template <typename T>
etl::optional<etl::span<const T>> read(const T* start, size_t length)Description
Read a range of T from the stream.
Unchecked
From: 20.18.0
The following functions will always read from the buffer. They do not check for free space.
template <typename T>
etl::optional<T> read_unchecked()Description
Read an integral value from the stream.
template <typename T>
etl::optional<etl::span<T>> read_unchecked(size_t n)Description
Read a byte range from the stream.
template <typename T>
etl::optional<etl::span<const T>> read_unchecked(etl::span<T> range)Description
Read a range of T from the stream.
template <typename T>
etl::optional<etl::span<const T>> read_unchecked(T* start, size_t length)Description
Read a range of T from the stream.
Status
bool empty() constDescription
Returns true if the byte stream is empty.
size_t size_bytes() constDescription
Returns the number of bytes used in the stream.
template <typename T>
size_t available() constDescription
The number of T left in the stream.
Access
void restart(size_t n = 0U)Description
Sets the index back to position n in the stream. Default = 0.
template <typename T>
bool skip(size_t n)Description
Skip n items of T, if the total space is available.
Returns true if the skip was possible.
Returns false if the full skip size was not possible.
template <typename T>
bool skip(size_t n)Description
Skip n items of T, if the total space is available.
Returns true if the skip was possible.
Asserts etl::byte_stream_overflow and returns false if the skip size was not possible.
From: 20.29.1
const_iterator begin() constDescription
Returns start of the stream.
const_iterator end() constDescription
Returns end of the stream.
const_iterator cbegin() constDescription
Returns start of the stream.
const_iterator cend() constDescription
Returns end of the stream.
etl::span<char> used_data() constDescription
Returns a span of the used portion of the stream.
etl::span<char> free_data() constDescription
Returns a span of the free portion of the stream.
etl::span<char> data() constDescription
Returns a span of whole the stream.
Non-member functions
Default implementation of the read functions.
For integral and floating point types only.
Specialise these to support custom types.
template <typename T> 20.18.0
T read_unchecked(etl::byte_stream_reader& stream)template <typename T>
etl::optional<T> read(etl::byte_stream_reader& stream)