C++ Utilities  4.17.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
IoUtilities::BinaryReader Class Reference

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

#include <binaryreader.h>

Public Member Functions

 BinaryReader (std::istream *stream)
 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 (byte *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...
 
int16 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...
 
uint16 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...
 
int32 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...
 
uint32 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...
 
int32 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...
 
uint32 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...
 
int64 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...
 
uint64 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...
 
int64 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...
 
uint64 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...
 
int64 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...
 
uint64 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...
 
uint64 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...
 
float32 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...
 
float64 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...
 
int16 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...
 
uint16 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...
 
int32 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...
 
uint32 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...
 
int32 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...
 
uint32 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...
 
int64 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...
 
uint64 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...
 
int64 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...
 
uint64 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...
 
int64 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...
 
uint64 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...
 
uint64 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...
 
float32 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...
 
float64 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...
 
byte 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 (byte termination=0)
 Reads a terminated string from the current stream. More...
 
std::string readTerminatedString (size_t maxBytesToRead, byte termination=0)
 Reads a terminated string from the current stream. More...
 
std::string readMultibyteTerminatedStringBE (uint16 termination=0)
 Reads a multibyte-terminated string from the current stream. More...
 
std::string readMultibyteTerminatedStringLE (uint16 termination=0)
 Reads a multibyte-terminated string from the current stream. More...
 
std::string readMultibyteTerminatedStringBE (std::size_t maxBytesToRead, uint16 termination=0)
 Reads a terminated string from the current stream. More...
 
std::string readMultibyteTerminatedStringLE (std::size_t maxBytesToRead, uint16 termination=0)
 Reads a terminated string from the current stream. More...
 
uint32 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...
 
float32 readFixed8BE ()
 Reads a 8.8 fixed point big endian representation from the current stream and returns it as 32-bit floating point value. More...
 
float32 readFixed16BE ()
 Reads a 16.16 fixed point big endian representation from the current stream and returns it as 32-bit floating point value. More...
 
uint32 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...
 
float32 readFixed8LE ()
 Reads a 8.8 fixed point little endian representation from the current stream and returns it as 32-bit floating point value. More...
 
float32 readFixed16LE ()
 Reads a 16.16 fixed point little endian representation from the current stream and returns it as 32-bit floating point value. More...
 
uint32 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 (byte &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 (int16 &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 (uint16 &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 (int32 &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 (uint32 &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 (int64 &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 (uint64 &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 (float32 &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 (float64 &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 uint32 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 uint32 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]

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

Constructs a new BinaryReader.

Parameters
streamSpecifies the stream to read from.

Definition at line 29 of file binaryreader.cpp.

◆ BinaryReader() [2/2]

BinaryReader::BinaryReader ( const BinaryReader other)

Copies the specified BinaryReader.

Remarks
The copy will not take ownership over the stream.

Definition at line 39 of file binaryreader.cpp.

◆ ~BinaryReader()

BinaryReader::~BinaryReader ( )

Destroys the BinaryReader.

Definition at line 48 of file binaryreader.cpp.

Member Function Documentation

◆ canRead()

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

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

Definition at line 182 of file binaryreader.h.

◆ computeCrc32()

uint32 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 312 of file binaryreader.cpp.

◆ detatchOwnership()

void IoUtilities::BinaryReader::detatchOwnership ( )
inline

The reader will not take ownership over the assigned stream.

See also
setStream()
giveOwnership()
hasOwnership()

Definition at line 158 of file binaryreader.h.

◆ eof()

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

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

Definition at line 174 of file binaryreader.h.

◆ fail()

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

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

Definition at line 166 of file binaryreader.h.

◆ giveOwnership()

void IoUtilities::BinaryReader::giveOwnership ( )
inline

The reader will take ownership over the assigned stream.

See also
setStream()
detatchOwnership()
hasOwnership()

Definition at line 144 of file binaryreader.h.

◆ hasOwnership()

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

Returns whether the reader takes ownership over the assigned stream.

See also
setStream()
giveOwnership()
detatchOwnership()

Definition at line 132 of file binaryreader.h.

◆ operator=()

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

◆ read() [1/15]

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

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

Definition at line 190 of file binaryreader.h.

◆ read() [2/15]

void IoUtilities::BinaryReader::read ( byte buffer,
std::streamsize  length 
)
inline

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

Definition at line 198 of file binaryreader.h.

◆ read() [3/15]

void IoUtilities::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 206 of file binaryreader.h.

◆ read() [4/15]

void IoUtilities::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 602 of file binaryreader.h.

◆ read() [5/15]

void IoUtilities::BinaryReader::read ( byte 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 610 of file binaryreader.h.

◆ read() [6/15]

void IoUtilities::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 619 of file binaryreader.h.

◆ read() [7/15]

void IoUtilities::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 630 of file binaryreader.h.

◆ read() [8/15]

void IoUtilities::BinaryReader::read ( int16 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 638 of file binaryreader.h.

◆ read() [9/15]

void IoUtilities::BinaryReader::read ( uint16 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 646 of file binaryreader.h.

◆ read() [10/15]

void IoUtilities::BinaryReader::read ( int32 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 654 of file binaryreader.h.

◆ read() [11/15]

void IoUtilities::BinaryReader::read ( uint32 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 662 of file binaryreader.h.

◆ read() [12/15]

void IoUtilities::BinaryReader::read ( int64 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 670 of file binaryreader.h.

◆ read() [13/15]

void IoUtilities::BinaryReader::read ( uint64 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 678 of file binaryreader.h.

◆ read() [14/15]

void IoUtilities::BinaryReader::read ( float32 &  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 686 of file binaryreader.h.

◆ read() [15/15]

void IoUtilities::BinaryReader::read ( float64 &  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 694 of file binaryreader.h.

◆ readBool()

bool IoUtilities::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 542 of file binaryreader.h.

◆ readByte()

byte IoUtilities::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 532 of file binaryreader.h.

◆ readChar()

char IoUtilities::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 523 of file binaryreader.h.

◆ readCrc32()

uint32 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 295 of file binaryreader.cpp.

◆ readFixed16BE()

float32 IoUtilities::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 568 of file binaryreader.h.

◆ readFixed16LE()

float32 IoUtilities::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 594 of file binaryreader.h.

◆ readFixed8BE()

float32 IoUtilities::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 560 of file binaryreader.h.

◆ readFixed8LE()

float32 IoUtilities::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 586 of file binaryreader.h.

◆ readFloat32BE()

float32 IoUtilities::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 351 of file binaryreader.h.

◆ readFloat32LE()

float32 IoUtilities::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 505 of file binaryreader.h.

◆ readFloat64BE()

float64 IoUtilities::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 360 of file binaryreader.h.

◆ readFloat64LE()

float64 IoUtilities::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 514 of file binaryreader.h.

◆ readInt16BE()

int16 IoUtilities::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 215 of file binaryreader.h.

◆ readInt16LE()

int16 IoUtilities::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 369 of file binaryreader.h.

◆ readInt24BE()

int32 IoUtilities::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 233 of file binaryreader.h.

◆ readInt24LE()

int32 IoUtilities::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 387 of file binaryreader.h.

◆ readInt32BE()

int32 IoUtilities::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 257 of file binaryreader.h.

◆ readInt32LE()

int32 IoUtilities::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 411 of file binaryreader.h.

◆ readInt40BE()

int64 IoUtilities::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 275 of file binaryreader.h.

◆ readInt40LE()

int64 IoUtilities::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 429 of file binaryreader.h.

◆ readInt56BE()

int64 IoUtilities::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 299 of file binaryreader.h.

◆ readInt56LE()

int64 IoUtilities::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 453 of file binaryreader.h.

◆ readInt64BE()

int64 IoUtilities::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 323 of file binaryreader.h.

◆ readInt64LE()

int64 IoUtilities::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 477 of file binaryreader.h.

◆ readLengthPrefixedString()

string BinaryReader::readLengthPrefixedString ( )

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.
Todo:
Make inline in v5.

Definition at line 120 of file binaryreader.cpp.

◆ readMultibyteTerminatedStringBE() [1/2]

string BinaryReader::readMultibyteTerminatedStringBE ( uint16  termination = 0)

Reads a multibyte-terminated string from the current stream.

Advances the current position of the stream by the string length plus two bytes.

Parameters
terminationSpecifies the two byte sized big endian value to be recognized as termination.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 189 of file binaryreader.cpp.

◆ readMultibyteTerminatedStringBE() [2/2]

string BinaryReader::readMultibyteTerminatedStringBE ( std::size_t  maxBytesToRead,
uint16  termination = 0 
)

Reads a terminated string from the current stream.

Advances the current position of the stream by the string length plus two bytes but maximal by maxBytesToRead.

Parameters
maxBytesToReadThe maximal number of bytes to read.
terminationThe two byte sized big endian value to be recognized as termination.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 245 of file binaryreader.cpp.

◆ readMultibyteTerminatedStringLE() [1/2]

string BinaryReader::readMultibyteTerminatedStringLE ( uint16  termination = 0)

Reads a multibyte-terminated string from the current stream.

Advances the current position of the stream by the string length plus two bytes.

Parameters
terminationSpecifies the two byte sized little endian value to be recognized as termination.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 216 of file binaryreader.cpp.

◆ readMultibyteTerminatedStringLE() [2/2]

string BinaryReader::readMultibyteTerminatedStringLE ( std::size_t  maxBytesToRead,
uint16  termination = 0 
)

Reads a terminated string from the current stream.

Advances the current position of the stream by the string length plus two bytes but maximal by maxBytesToRead.

Parameters
maxBytesToReadThe maximal number of bytes to read.
terminationThe two byte sized little endian value to be recognized as termination.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 272 of file binaryreader.cpp.

◆ readStreamsize()

istream::pos_type 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 87 of file binaryreader.cpp.

◆ readString()

string 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 128 of file binaryreader.cpp.

◆ readSynchsafeUInt32BE()

uint32 IoUtilities::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 552 of file binaryreader.h.

◆ readSynchsafeUInt32LE()

uint32 IoUtilities::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 578 of file binaryreader.h.

◆ readTerminatedString() [1/2]

string BinaryReader::readTerminatedString ( byte  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.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 146 of file binaryreader.cpp.

◆ readTerminatedString() [2/2]

string BinaryReader::readTerminatedString ( size_t  maxBytesToRead,
byte  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.
Deprecated:
This method is likely refactored/removed in v5.
Todo:
Refactor/remove in v5.

Definition at line 167 of file binaryreader.cpp.

◆ readUInt16BE()

uint16 IoUtilities::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 224 of file binaryreader.h.

◆ readUInt16LE()

uint16 IoUtilities::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 378 of file binaryreader.h.

◆ readUInt24BE()

uint32 IoUtilities::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 247 of file binaryreader.h.

◆ readUInt24LE()

uint32 IoUtilities::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 401 of file binaryreader.h.

◆ readUInt32BE()

uint32 IoUtilities::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 266 of file binaryreader.h.

◆ readUInt32LE()

uint32 IoUtilities::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 420 of file binaryreader.h.

◆ readUInt40BE()

uint64 IoUtilities::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 289 of file binaryreader.h.

◆ readUInt40LE()

uint64 IoUtilities::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 443 of file binaryreader.h.

◆ readUInt56BE()

uint64 IoUtilities::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 313 of file binaryreader.h.

◆ readUInt56LE()

uint64 IoUtilities::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 467 of file binaryreader.h.

◆ readUInt64BE()

uint64 IoUtilities::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 332 of file binaryreader.h.

◆ readUInt64LE()

uint64 IoUtilities::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 486 of file binaryreader.h.

◆ readVariableLengthUIntBE()

uint64 IoUtilities::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 342 of file binaryreader.h.

◆ readVariableLengthUIntLE()

uint64 IoUtilities::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 496 of file binaryreader.h.

◆ setStream()

void 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.
giveOwnershipIndicated whether the reader should take ownership (default is false).
See also
setStream()

Definition at line 66 of file binaryreader.cpp.

◆ stream() [1/2]

const std::istream * IoUtilities::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 120 of file binaryreader.h.

◆ stream() [2/2]

std::istream * IoUtilities::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 110 of file binaryreader.h.

Member Data Documentation

◆ crc32Table

const uint32 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 81 of file binaryreader.h.


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