C++ Utilities 5.27.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
Loading...
Searching...
No Matches
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.
 
 BinaryReader (const BinaryReader &other)
 Copies the specified BinaryReader.
 
BinaryReaderoperator= (const BinaryReader &rhs)=delete
 
 ~BinaryReader ()
 Destroys the BinaryReader.
 
const std::istream * stream () const
 Returns a pointer to the stream the reader will read from when calling one of the read-methods.
 
std::istream * stream ()
 Returns a pointer to the stream the reader will read from when calling one of the read-methods.
 
void setStream (std::istream *stream, bool giveOwnership=false)
 Assigns the stream the reader will read from when calling one of the read-methods.
 
bool hasOwnership () const
 Returns whether the reader takes ownership over the assigned stream.
 
void giveOwnership ()
 The reader will take ownership over the assigned stream.
 
void detatchOwnership ()
 The reader will not take ownership over the assigned stream.
 
bool fail () const
 Returns an indication whether the fail bit of the assigned stream is set.
 
bool eof () const
 Returns an indication whether the end-of-stream bit of the assigned stream is set.
 
bool canRead () const
 Returns an indication whether a stream is assigned the reader can read from.
 
std::istream::pos_type readStreamsize ()
 Returns the size of the assigned stream.
 
std::istream::pos_type readRemainingBytes ()
 Returns the number of remaining bytes in the stream from the current offset.
 
void read (char *buffer, std::streamsize length)
 Reads the specified number of characters from the stream in the character array.
 
void read (std::uint8_t *buffer, std::streamsize length)
 Reads the specified number of bytes from the stream in the character array.
 
void read (std::vector< char > &buffer, std::streamsize length)
 Reads the specified number of bytes from the stream in the specified buffer.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
char readChar ()
 Reads a single character from the current stream and advances the current position of the stream by one byte.
 
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.
 
bool readBool ()
 Reads a boolean value from the current stream and advances the current position of the stream by one byte.
 
std::string readLengthPrefixedString ()
 Reads a length prefixed string from the current stream.
 
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.
 
std::string readTerminatedString (std::uint8_t termination=0)
 Reads a terminated string from the current stream.
 
std::string readTerminatedString (std::size_t maxBytesToRead, std::uint8_t termination=0)
 Reads a terminated string from the current stream.
 
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.
 
float readFixed8BE ()
 Reads a 8.8 fixed point big endian representation from the current stream and returns it as 32-bit floating point value.
 
float readFixed16BE ()
 Reads a 16.16 fixed point big endian representation from the current stream and returns it as 32-bit floating point value.
 
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.
 
float readFixed8LE ()
 Reads a 8.8 fixed point little endian representation from the current stream and returns it as 32-bit floating point value.
 
float readFixed16LE ()
 Reads a 16.16 fixed point little endian representation from the current stream and returns it as 32-bit floating point value.
 
std::uint32_t readCrc32 (std::size_t length)
 Reads length bytes from the stream and computes the CRC-32 for that block of data.
 
void read (char &oneCharacter)
 Reads a single character from the current stream and advances the current position of the stream by one byte.
 
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.
 
void read (bool &oneBool)
 Reads a boolean value from the current stream and advances the current position of the stream by one byte.
 
void read (std::string &lengthPrefixedString)
 Reads a length prefixed string from the current stream.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 

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.
 

Static Public Attributes

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

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 107 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 117 of file binaryreader.h.

◆ ~BinaryReader()

CppUtilities::BinaryReader::~BinaryReader ( )
inline

Destroys the BinaryReader.

Definition at line 126 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 210 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 168 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 186 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 202 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 194 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 172 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 160 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
BitReader

Definition at line 657 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 640 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 218 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 732 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 724 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 676 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 692 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 708 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 668 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 684 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 700 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 716 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 648 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 226 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 234 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
BitReader

Definition at line 570 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 560 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 551 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 151 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 606 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 632 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 598 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 624 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 379 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 533 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 388 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 542 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 243 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 397 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 261 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 415 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 285 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 439 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 303 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 457 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 327 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 481 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 351 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 505 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 580 of file binaryreader.h.

◆ readRemainingBytes()

istream::pos_type CppUtilities::BinaryReader::readRemainingBytes ( )

Returns the number of remaining bytes in the stream from the current offset.

Remarks
  • This is achieved by seeking to the end of the stream.
  • The method will seek back to the previous offset before returning.

Definition at line 66 of file binaryreader.cpp.

◆ readStreamsize()

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

Returns the size of the assigned stream.

Remarks
  • The size is determined by seeking to the end of the stream and returning this offset.
  • The method will seek back to the previous offset before returning.

Definition at line 51 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 96 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 590 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 616 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 129 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 111 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 252 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 406 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 275 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 429 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 294 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 448 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 317 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 471 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 341 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 495 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 360 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 514 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 370 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 524 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 138 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 148 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 78 of file binaryreader.h.


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