C++ Utilities  5.0.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
CppUtilities::BinaryReader Class Reference

Reads primitive data types from a std::istream. More...

#include <binaryreader.h>

Public Member Functions

 BinaryReader (std::istream *stream, bool giveOwnership=false)
 Constructs a new BinaryReader. More...
 
 BinaryReader (const BinaryReader &other)
 Copies the specified BinaryReader. More...
 
BinaryReaderoperator= (const BinaryReader &rhs)=delete
 
 ~BinaryReader ()
 Destroys the BinaryReader. More...
 
const std::istream * stream () const
 Returns a pointer to the stream the reader will read from when calling one of the read-methods. More...
 
std::istream * stream ()
 Returns a pointer to the stream the reader will read from when calling one of the read-methods. More...
 
void setStream (std::istream *stream, bool giveOwnership=false)
 Assigns the stream the reader will read from when calling one of the read-methods. More...
 
bool hasOwnership () const
 Returns whether the reader takes ownership over the assigned stream. More...
 
void giveOwnership ()
 The reader will take ownership over the assigned stream. More...
 
void detatchOwnership ()
 The reader will not take ownership over the assigned stream. More...
 
bool fail () const
 Returns an indication whether the fail bit of the assigned stream is set. More...
 
bool eof () const
 Returns an indication whether the end-of-stream bit of the assigned stream is set. More...
 
bool canRead () const
 Returns an indication whether a stream is assigned the reader can read from. More...
 
std::istream::pos_type readStreamsize ()
 Returns the size of the assigned stream. More...
 
void read (char *buffer, std::streamsize length)
 Reads the specified number of characters from the stream in the character array. More...
 
void read (std::uint8_t *buffer, std::streamsize length)
 Reads the specified number of bytes from the stream in the character array. More...
 
void read (std::vector< char > &buffer, std::streamsize length)
 Reads the specified number of bytes from the stream in the specified buffer. More...
 
std::int16_t readInt16BE ()
 Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes. More...
 
std::uint16_t readUInt16BE ()
 Reads a 16-bit big endian unsigned integer from the current stream and advances the current position of the stream by two bytes. More...
 
std::int32_t readInt24BE ()
 Reads a 24-bit big endian signed integer from the current stream and advances the current position of the stream by three bytes. More...
 
std::uint32_t readUInt24BE ()
 Reads a 24-bit big endian unsigned integer from the current stream and advances the current position of the stream by three bytes. More...
 
std::int32_t readInt32BE ()
 Reads a 32-bit big endian signed integer from the current stream and advances the current position of the stream by four bytes. More...
 
std::uint32_t readUInt32BE ()
 Reads a 32-bit big endian unsigned integer from the current stream and advances the current position of the stream by four bytes. More...
 
std::int64_t readInt40BE ()
 Reads a 40-bit big endian signed integer from the current stream and advances the current position of the stream by five bytes. More...
 
std::uint64_t readUInt40BE ()
 Reads a 40-bit big endian unsigned integer from the current stream and advances the current position of the stream by five bytes. More...
 
std::int64_t readInt56BE ()
 Reads a 56-bit big endian signed integer from the current stream and advances the current position of the stream by seven bytes. More...
 
std::uint64_t readUInt56BE ()
 Reads a 56-bit big endian unsigned integer from the current stream and advances the current position of the stream by seven bytes. More...
 
std::int64_t readInt64BE ()
 Reads a 64-bit big endian signed integer from the current stream and advances the current position of the stream by eight bytes. More...
 
std::uint64_t readUInt64BE ()
 Reads a 64-bit big endian unsigned integer from the current stream and advances the current position of the stream by eight bytes. More...
 
std::uint64_t readVariableLengthUIntBE ()
 Reads an up to 8 byte long big endian unsigned integer from the current stream and advances the current position of the stream by one to eight byte. More...
 
float readFloat32BE ()
 Reads a 32-bit big endian floating point value from the current stream and advances the current position of the stream by four bytes. More...
 
double readFloat64BE ()
 Reads a 64-bit big endian floating point value from the current stream and advances the current position of the stream by eight bytes. More...
 
std::int16_t readInt16LE ()
 Reads a 16-bit little endian signed integer from the current stream and advances the current position of the stream by two bytes. More...
 
std::uint16_t readUInt16LE ()
 Reads a 16-bit little endian unsigned integer from the current stream and advances the current position of the stream by two bytes. More...
 
std::int32_t readInt24LE ()
 Reads a 24-bit little endian signed integer from the current stream and advances the current position of the stream by three bytes. More...
 
std::uint32_t readUInt24LE ()
 Reads a 24-bit little endian unsigned integer from the current stream and advances the current position of the stream by three bytes. More...
 
std::int32_t readInt32LE ()
 Reads a 32-bit little endian signed integer from the current stream and advances the current position of the stream by four bytes. More...
 
std::uint32_t readUInt32LE ()
 Reads a 32-bit little endian unsigned integer from the current stream and advances the current position of the stream by four bytes. More...
 
std::int64_t readInt40LE ()
 Reads a 40-bit little endian signed integer from the current stream and advances the current position of the stream by five bytes. More...
 
std::uint64_t readUInt40LE ()
 Reads a 40-bit little endian unsigned integer from the current stream and advances the current position of the stream by five bytes. More...
 
std::int64_t readInt56LE ()
 Reads a 56-bit little endian signed integer from the current stream and advances the current position of the stream by seven bytes. More...
 
std::uint64_t readUInt56LE ()
 Reads a 56-bit little endian unsigned integer from the current stream and advances the current position of the stream by seven bytes. More...
 
std::int64_t readInt64LE ()
 Reads a 64-bit little endian signed integer from the current stream and advances the current position of the stream by eight bytes. More...
 
std::uint64_t readUInt64LE ()
 Reads a 64-bit little endian unsigned integer from the current stream and advances the current position of the stream by eight bytes. More...
 
std::uint64_t readVariableLengthUIntLE ()
 Reads an up to 8 byte long little endian unsigned integer from the current stream and advances the current position of the stream by one to eight byte. More...
 
float readFloat32LE ()
 Reads a 32-bit little endian floating point value from the current stream and advances the current position of the stream by four bytes. More...
 
double readFloat64LE ()
 Reads a 64-bit little endian floating point value from the current stream and advances the current position of the stream by eight bytes. More...
 
char readChar ()
 Reads a single character from the current stream and advances the current position of the stream by one byte. More...
 
std::uint8_t readByte ()
 Reads a single byte/unsigned character from the current stream and advances the current position of the stream by one byte. More...
 
bool readBool ()
 Reads a boolean value from the current stream and advances the current position of the stream by one byte. More...
 
std::string readLengthPrefixedString ()
 Reads a length prefixed string from the current stream. More...
 
std::string readString (std::size_t length)
 Reads a string from the current stream of the given length from the stream and advances the current position of the stream by length byte. More...
 
std::string readTerminatedString (std::uint8_t termination=0)
 Reads a terminated string from the current stream. More...
 
std::string readTerminatedString (std::size_t maxBytesToRead, std::uint8_t termination=0)
 Reads a terminated string from the current stream. More...
 
std::uint32_t readSynchsafeUInt32BE ()
 Reads a 32-bit big endian synchsafe integer from the current stream and advances the current position of the stream by four bytes. More...
 
float readFixed8BE ()
 Reads a 8.8 fixed point big endian representation from the current stream and returns it as 32-bit floating point value. More...
 
float readFixed16BE ()
 Reads a 16.16 fixed point big endian representation from the current stream and returns it as 32-bit floating point value. More...
 
std::uint32_t readSynchsafeUInt32LE ()
 Reads a 32-bit little endian synchsafe integer from the current stream and advances the current position of the stream by four bytes. More...
 
float readFixed8LE ()
 Reads a 8.8 fixed point little endian representation from the current stream and returns it as 32-bit floating point value. More...
 
float readFixed16LE ()
 Reads a 16.16 fixed point little endian representation from the current stream and returns it as 32-bit floating point value. More...
 
std::uint32_t readCrc32 (std::size_t length)
 Reads length bytes from the stream and computes the CRC-32 for that block of data. More...
 
void read (char &oneCharacter)
 Reads a single character from the current stream and advances the current position of the stream by one byte. More...
 
void read (std::uint8_t &oneByte)
 Reads a single byte/unsigned character from the current stream and advances the current position of the stream by one byte. More...
 
void read (bool &oneBool)
 Reads a boolean value from the current stream and advances the current position of the stream by one byte. More...
 
void read (std::string &lengthPrefixedString)
 Reads a length prefixed string from the current stream. More...
 
void read (std::int16_t &one16BitInt)
 Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes. More...
 
void read (std::uint16_t &one16BitUInt)
 Reads a 16-bit big endian unsigned integer from the current stream and advances the current position of the stream by two bytes. More...
 
void read (std::int32_t &one32BitInt)
 Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes. More...
 
void read (std::uint32_t &one32BitUInt)
 Reads a 32-bit big endian unsigned integer from the current stream and advances the current position of the stream by four bytes. More...
 
void read (std::int64_t &one64BitInt)
 Reads a 64-bit big endian signed integer from the current stream and advances the current position of the stream by eight bytes. More...
 
void read (std::uint64_t &one64BitUInt)
 Reads a 64-bit big endian unsigned integer from the current stream and advances the current position of the stream by eight bytes. More...
 
void read (float &one32BitFloat)
 Reads a 32-bit big endian floating point value from the current stream and advances the current position of the stream by four bytes. More...
 
void read (double &one64BitFloat)
 Reads a 64-bit big endian floating point value from the current stream and advances the current position of the stream by eight bytes. More...
 

Static Public Member Functions

static std::uint32_t computeCrc32 (const char *buffer, std::size_t length)
 Reads length bytes from the buffer and computes the CRC-32 for that block of data. More...
 

Static Public Attributes

static const std::uint32_t crc32Table []
 CRC-32 table. More...
 

Detailed Description

Reads primitive data types from a std::istream.

Remarks
Supports both, little endian and big endian.
See also
For automatic serialization of structs, see https://github.com/Martchus/reflective-rapidjson.

Definition at line 11 of file binaryreader.h.

Constructor & Destructor Documentation

◆ BinaryReader() [1/2]

CppUtilities::BinaryReader::BinaryReader ( std::istream *  stream,
bool  giveOwnership = false 
)
inline

Constructs a new BinaryReader.

Parameters
streamSpecifies the stream to read from.
giveOwnershipSpecifies whether the reader should take ownership.

Definition at line 106 of file binaryreader.h.

◆ BinaryReader() [2/2]

CppUtilities::BinaryReader::BinaryReader ( const BinaryReader other)
inline

Copies the specified BinaryReader.

Remarks
The copy will not take ownership over the stream.

Definition at line 116 of file binaryreader.h.

◆ ~BinaryReader()

CppUtilities::BinaryReader::~BinaryReader ( )
inline

Destroys the BinaryReader.

Definition at line 125 of file binaryreader.h.

Member Function Documentation

◆ canRead()

bool CppUtilities::BinaryReader::canRead ( ) const
inline

Returns an indication whether a stream is assigned the reader can read from.

Definition at line 209 of file binaryreader.h.

◆ computeCrc32()

std::uint32_t CppUtilities::BinaryReader::computeCrc32 ( const char *  buffer,
std::size_t  length 
)
static

Reads length bytes from the buffer and computes the CRC-32 for that block of data.

Remarks
Cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.
Ogg compatible version
See also
Cyclic redundancy check - Wikipedia

Definition at line 154 of file binaryreader.cpp.

◆ detatchOwnership()

void CppUtilities::BinaryReader::detatchOwnership ( )
inline

The reader will not take ownership over the assigned stream.

See also
setStream()
giveOwnership()
hasOwnership()

Definition at line 185 of file binaryreader.h.

◆ eof()

bool CppUtilities::BinaryReader::eof ( ) const
inline

Returns an indication whether the end-of-stream bit of the assigned stream is set.

Definition at line 201 of file binaryreader.h.

◆ fail()

bool CppUtilities::BinaryReader::fail ( ) const
inline

Returns an indication whether the fail bit of the assigned stream is set.

Definition at line 193 of file binaryreader.h.

◆ giveOwnership()

void CppUtilities::BinaryReader::giveOwnership ( )
inline

The reader will take ownership over the assigned stream.

See also
setStream()
detatchOwnership()
hasOwnership()

Definition at line 171 of file binaryreader.h.

◆ hasOwnership()

bool CppUtilities::BinaryReader::hasOwnership ( ) const
inline

Returns whether the reader takes ownership over the assigned stream.

See also
setStream()
giveOwnership()
detatchOwnership()

Definition at line 159 of file binaryreader.h.

◆ operator=()

BinaryReader& CppUtilities::BinaryReader::operator= ( const BinaryReader rhs)
delete

◆ read() [1/15]

void CppUtilities::BinaryReader::read ( bool &  oneBool)
inline

Reads a boolean value from the current stream and advances the current position of the stream by one byte.

See also
IoUtilities::BitReader

Definition at line 656 of file binaryreader.h.

◆ read() [2/15]

void CppUtilities::BinaryReader::read ( char &  oneCharacter)
inline

Reads a single character from the current stream and advances the current position of the stream by one byte.

Definition at line 639 of file binaryreader.h.

◆ read() [3/15]

void CppUtilities::BinaryReader::read ( char *  buffer,
std::streamsize  length 
)
inline

Reads the specified number of characters from the stream in the character array.

Definition at line 217 of file binaryreader.h.

◆ read() [4/15]

void CppUtilities::BinaryReader::read ( double &  one64BitFloat)
inline

Reads a 64-bit big endian floating point value from the current stream and advances the current position of the stream by eight bytes.

Definition at line 731 of file binaryreader.h.

◆ read() [5/15]

void CppUtilities::BinaryReader::read ( float &  one32BitFloat)
inline

Reads a 32-bit big endian floating point value from the current stream and advances the current position of the stream by four bytes.

Definition at line 723 of file binaryreader.h.

◆ read() [6/15]

void CppUtilities::BinaryReader::read ( std::int16_t &  one16BitInt)
inline

Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 675 of file binaryreader.h.

◆ read() [7/15]

void CppUtilities::BinaryReader::read ( std::int32_t &  one32BitInt)
inline

Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 691 of file binaryreader.h.

◆ read() [8/15]

void CppUtilities::BinaryReader::read ( std::int64_t &  one64BitInt)
inline

Reads a 64-bit big endian signed integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 707 of file binaryreader.h.

◆ read() [9/15]

void CppUtilities::BinaryReader::read ( std::string &  lengthPrefixedString)
inline

Reads a length prefixed string from the current stream.

Remarks
Reads the length prefix from the stream and then a string of the denoted length. Advances the current position of the stream by the denoted length of the string plus the prefix length.

Definition at line 667 of file binaryreader.h.

◆ read() [10/15]

void CppUtilities::BinaryReader::read ( std::uint16_t &  one16BitUInt)
inline

Reads a 16-bit big endian unsigned integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 683 of file binaryreader.h.

◆ read() [11/15]

void CppUtilities::BinaryReader::read ( std::uint32_t &  one32BitUInt)
inline

Reads a 32-bit big endian unsigned integer from the current stream and advances the current position of the stream by four bytes.

Definition at line 699 of file binaryreader.h.

◆ read() [12/15]

void CppUtilities::BinaryReader::read ( std::uint64_t &  one64BitUInt)
inline

Reads a 64-bit big endian unsigned integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 715 of file binaryreader.h.

◆ read() [13/15]

void CppUtilities::BinaryReader::read ( std::uint8_t &  oneByte)
inline

Reads a single byte/unsigned character from the current stream and advances the current position of the stream by one byte.

Definition at line 647 of file binaryreader.h.

◆ read() [14/15]

void CppUtilities::BinaryReader::read ( std::uint8_t *  buffer,
std::streamsize  length 
)
inline

Reads the specified number of bytes from the stream in the character array.

Definition at line 225 of file binaryreader.h.

◆ read() [15/15]

void CppUtilities::BinaryReader::read ( std::vector< char > &  buffer,
std::streamsize  length 
)
inline

Reads the specified number of bytes from the stream in the specified buffer.

Definition at line 233 of file binaryreader.h.

◆ readBool()

bool CppUtilities::BinaryReader::readBool ( )
inline

Reads a boolean value from the current stream and advances the current position of the stream by one byte.

See also
IoUtilities::BitReader

Definition at line 569 of file binaryreader.h.

◆ readByte()

uint8_t CppUtilities::BinaryReader::readByte ( )
inline

Reads a single byte/unsigned character from the current stream and advances the current position of the stream by one byte.

Definition at line 559 of file binaryreader.h.

◆ readChar()

char CppUtilities::BinaryReader::readChar ( )
inline

Reads a single character from the current stream and advances the current position of the stream by one byte.

Definition at line 550 of file binaryreader.h.

◆ readCrc32()

std::uint32_t CppUtilities::BinaryReader::readCrc32 ( std::size_t  length)

Reads length bytes from the stream and computes the CRC-32 for that block of data.

Remarks
Cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.
Ogg compatible version
See also
Cyclic redundancy check - Wikipedia

Definition at line 137 of file binaryreader.cpp.

◆ readFixed16BE()

float CppUtilities::BinaryReader::readFixed16BE ( )
inline

Reads a 16.16 fixed point big endian representation from the current stream and returns it as 32-bit floating point value.

Definition at line 605 of file binaryreader.h.

◆ readFixed16LE()

float CppUtilities::BinaryReader::readFixed16LE ( )
inline

Reads a 16.16 fixed point little endian representation from the current stream and returns it as 32-bit floating point value.

Definition at line 631 of file binaryreader.h.

◆ readFixed8BE()

float CppUtilities::BinaryReader::readFixed8BE ( )
inline

Reads a 8.8 fixed point big endian representation from the current stream and returns it as 32-bit floating point value.

Definition at line 597 of file binaryreader.h.

◆ readFixed8LE()

float CppUtilities::BinaryReader::readFixed8LE ( )
inline

Reads a 8.8 fixed point little endian representation from the current stream and returns it as 32-bit floating point value.

Definition at line 623 of file binaryreader.h.

◆ readFloat32BE()

float CppUtilities::BinaryReader::readFloat32BE ( )
inline

Reads a 32-bit big endian floating point value from the current stream and advances the current position of the stream by four bytes.

Definition at line 378 of file binaryreader.h.

◆ readFloat32LE()

float CppUtilities::BinaryReader::readFloat32LE ( )
inline

Reads a 32-bit little endian floating point value from the current stream and advances the current position of the stream by four bytes.

Definition at line 532 of file binaryreader.h.

◆ readFloat64BE()

double CppUtilities::BinaryReader::readFloat64BE ( )
inline

Reads a 64-bit big endian floating point value from the current stream and advances the current position of the stream by eight bytes.

Definition at line 387 of file binaryreader.h.

◆ readFloat64LE()

double CppUtilities::BinaryReader::readFloat64LE ( )
inline

Reads a 64-bit little endian floating point value from the current stream and advances the current position of the stream by eight bytes.

Definition at line 541 of file binaryreader.h.

◆ readInt16BE()

std::int16_t CppUtilities::BinaryReader::readInt16BE ( )
inline

Reads a 16-bit big endian signed integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 242 of file binaryreader.h.

◆ readInt16LE()

std::int16_t CppUtilities::BinaryReader::readInt16LE ( )
inline

Reads a 16-bit little endian signed integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 396 of file binaryreader.h.

◆ readInt24BE()

std::int32_t CppUtilities::BinaryReader::readInt24BE ( )
inline

Reads a 24-bit big endian signed integer from the current stream and advances the current position of the stream by three bytes.

Definition at line 260 of file binaryreader.h.

◆ readInt24LE()

std::int32_t CppUtilities::BinaryReader::readInt24LE ( )
inline

Reads a 24-bit little endian signed integer from the current stream and advances the current position of the stream by three bytes.

Definition at line 414 of file binaryreader.h.

◆ readInt32BE()

std::int32_t CppUtilities::BinaryReader::readInt32BE ( )
inline

Reads a 32-bit big endian signed integer from the current stream and advances the current position of the stream by four bytes.

Definition at line 284 of file binaryreader.h.

◆ readInt32LE()

std::int32_t CppUtilities::BinaryReader::readInt32LE ( )
inline

Reads a 32-bit little endian signed integer from the current stream and advances the current position of the stream by four bytes.

Definition at line 438 of file binaryreader.h.

◆ readInt40BE()

std::int64_t CppUtilities::BinaryReader::readInt40BE ( )
inline

Reads a 40-bit big endian signed integer from the current stream and advances the current position of the stream by five bytes.

Definition at line 302 of file binaryreader.h.

◆ readInt40LE()

std::int64_t CppUtilities::BinaryReader::readInt40LE ( )
inline

Reads a 40-bit little endian signed integer from the current stream and advances the current position of the stream by five bytes.

Definition at line 456 of file binaryreader.h.

◆ readInt56BE()

std::int64_t CppUtilities::BinaryReader::readInt56BE ( )
inline

Reads a 56-bit big endian signed integer from the current stream and advances the current position of the stream by seven bytes.

Definition at line 326 of file binaryreader.h.

◆ readInt56LE()

std::int64_t CppUtilities::BinaryReader::readInt56LE ( )
inline

Reads a 56-bit little endian signed integer from the current stream and advances the current position of the stream by seven bytes.

Definition at line 480 of file binaryreader.h.

◆ readInt64BE()

std::int64_t CppUtilities::BinaryReader::readInt64BE ( )
inline

Reads a 64-bit big endian signed integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 350 of file binaryreader.h.

◆ readInt64LE()

std::int64_t CppUtilities::BinaryReader::readInt64LE ( )
inline

Reads a 64-bit little endian signed integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 504 of file binaryreader.h.

◆ readLengthPrefixedString()

std::string CppUtilities::BinaryReader::readLengthPrefixedString ( )
inline

Reads a length prefixed string from the current stream.

Remarks
Reads the length prefix from the stream and then a string of the denoted length. Advances the current position of the stream by the denoted length of the string plus the prefix length.

Definition at line 579 of file binaryreader.h.

◆ readStreamsize()

istream::pos_type CppUtilities::BinaryReader::readStreamsize ( )

Returns the size of the assigned stream.

The size is determined by seeking to the end of the stream and returning this offset.

Remarks
The method will seek back to the previous offset before returning.

Definition at line 52 of file binaryreader.cpp.

◆ readString()

string CppUtilities::BinaryReader::readString ( std::size_t  length)

Reads a string from the current stream of the given length from the stream and advances the current position of the stream by length byte.

Definition at line 82 of file binaryreader.cpp.

◆ readSynchsafeUInt32BE()

std::uint32_t CppUtilities::BinaryReader::readSynchsafeUInt32BE ( )
inline

Reads a 32-bit big endian synchsafe integer from the current stream and advances the current position of the stream by four bytes.

Remarks
Synchsafe integers appear in ID3 tags that are attached to an MP3 file.
See also
ID3 tag version 2.4.0 - Main Structure

Definition at line 589 of file binaryreader.h.

◆ readSynchsafeUInt32LE()

std::uint32_t CppUtilities::BinaryReader::readSynchsafeUInt32LE ( )
inline

Reads a 32-bit little endian synchsafe integer from the current stream and advances the current position of the stream by four bytes.

Remarks
Synchsafe integers appear in ID3 tags that are attached to an MP3 file.
See also
ID3 tag version 2.4.0 - Main Structure

Definition at line 615 of file binaryreader.h.

◆ readTerminatedString() [1/2]

string CppUtilities::BinaryReader::readTerminatedString ( std::size_t  maxBytesToRead,
std::uint8_t  termination = 0 
)

Reads a terminated string from the current stream.

Advances the current position of the stream by the string length plus one byte but maximal by maxBytesToRead.

Parameters
maxBytesToReadThe maximal number of bytes to read.
terminationThe value to be recognized as termination.

Definition at line 115 of file binaryreader.cpp.

◆ readTerminatedString() [2/2]

std::string CppUtilities::BinaryReader::readTerminatedString ( std::uint8_t  termination = 0)

Reads a terminated string from the current stream.

Advances the current position of the stream by the string length plus one byte.

Parameters
terminationThe byte to be recognized as termination value.

Definition at line 97 of file binaryreader.cpp.

◆ readUInt16BE()

std::uint16_t CppUtilities::BinaryReader::readUInt16BE ( )
inline

Reads a 16-bit big endian unsigned integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 251 of file binaryreader.h.

◆ readUInt16LE()

std::uint16_t CppUtilities::BinaryReader::readUInt16LE ( )
inline

Reads a 16-bit little endian unsigned integer from the current stream and advances the current position of the stream by two bytes.

Definition at line 405 of file binaryreader.h.

◆ readUInt24BE()

std::uint32_t CppUtilities::BinaryReader::readUInt24BE ( )
inline

Reads a 24-bit big endian unsigned integer from the current stream and advances the current position of the stream by three bytes.

Definition at line 274 of file binaryreader.h.

◆ readUInt24LE()

std::uint32_t CppUtilities::BinaryReader::readUInt24LE ( )
inline

Reads a 24-bit little endian unsigned integer from the current stream and advances the current position of the stream by three bytes.

Definition at line 428 of file binaryreader.h.

◆ readUInt32BE()

std::uint32_t CppUtilities::BinaryReader::readUInt32BE ( )
inline

Reads a 32-bit big endian unsigned integer from the current stream and advances the current position of the stream by four bytes.

Definition at line 293 of file binaryreader.h.

◆ readUInt32LE()

std::uint32_t CppUtilities::BinaryReader::readUInt32LE ( )
inline

Reads a 32-bit little endian unsigned integer from the current stream and advances the current position of the stream by four bytes.

Definition at line 447 of file binaryreader.h.

◆ readUInt40BE()

std::uint64_t CppUtilities::BinaryReader::readUInt40BE ( )
inline

Reads a 40-bit big endian unsigned integer from the current stream and advances the current position of the stream by five bytes.

Definition at line 316 of file binaryreader.h.

◆ readUInt40LE()

std::uint64_t CppUtilities::BinaryReader::readUInt40LE ( )
inline

Reads a 40-bit little endian unsigned integer from the current stream and advances the current position of the stream by five bytes.

Definition at line 470 of file binaryreader.h.

◆ readUInt56BE()

std::uint64_t CppUtilities::BinaryReader::readUInt56BE ( )
inline

Reads a 56-bit big endian unsigned integer from the current stream and advances the current position of the stream by seven bytes.

Definition at line 340 of file binaryreader.h.

◆ readUInt56LE()

std::uint64_t CppUtilities::BinaryReader::readUInt56LE ( )
inline

Reads a 56-bit little endian unsigned integer from the current stream and advances the current position of the stream by seven bytes.

Definition at line 494 of file binaryreader.h.

◆ readUInt64BE()

std::uint64_t CppUtilities::BinaryReader::readUInt64BE ( )
inline

Reads a 64-bit big endian unsigned integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 359 of file binaryreader.h.

◆ readUInt64LE()

std::uint64_t CppUtilities::BinaryReader::readUInt64LE ( )
inline

Reads a 64-bit little endian unsigned integer from the current stream and advances the current position of the stream by eight bytes.

Definition at line 513 of file binaryreader.h.

◆ readVariableLengthUIntBE()

std::uint64_t CppUtilities::BinaryReader::readVariableLengthUIntBE ( )
inline

Reads an up to 8 byte long big endian unsigned integer from the current stream and advances the current position of the stream by one to eight byte.

Exceptions
ThrowsConversionException if the size of the integer exceeds the maximum.

Definition at line 369 of file binaryreader.h.

◆ readVariableLengthUIntLE()

std::uint64_t CppUtilities::BinaryReader::readVariableLengthUIntLE ( )
inline

Reads an up to 8 byte long little endian unsigned integer from the current stream and advances the current position of the stream by one to eight byte.

Exceptions
ThrowsConversionException if the size of the integer exceeds the maximum.

Definition at line 523 of file binaryreader.h.

◆ setStream()

void CppUtilities::BinaryReader::setStream ( std::istream *  stream,
bool  giveOwnership = false 
)

Assigns the stream the reader will read from when calling one of the read-methods.

You can assign a null pointer when ensuring that none of the read-methods is called until a stream is assigned.

Parameters
streamSpecifies the stream to be assigned.
giveOwnershipSpecifies whether the reader should take ownership.
See also
setStream()

Definition at line 31 of file binaryreader.cpp.

◆ stream() [1/2]

std::istream * CppUtilities::BinaryReader::stream ( )
inline

Returns a pointer to the stream the reader will read from when calling one of the read-methods.

See also
setStream()

Definition at line 137 of file binaryreader.h.

◆ stream() [2/2]

const std::istream * CppUtilities::BinaryReader::stream ( ) const
inline

Returns a pointer to the stream the reader will read from when calling one of the read-methods.

See also
setStream()

Definition at line 147 of file binaryreader.h.

Member Data Documentation

◆ crc32Table

const std::uint32_t CppUtilities::BinaryReader::crc32Table
static
Initial value:
= { 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 }

CRC-32 table.

Remarks
Internally used by readCrc32() method.
See also
readCrc32()

Definition at line 77 of file binaryreader.h.


The documentation for this class was generated from the following files: