SUMO - Simulation of Urban MObility
BinaryInputDevice Class Reference

Encapsulates binary reading operations on a file. More...

#include <BinaryInputDevice.h>

Collaboration diagram for BinaryInputDevice:
Collaboration graph

Public Member Functions

 BinaryInputDevice (const std::string &name, const bool isTyped=false, const bool doValidate=false)
 Constructor. More...
 
bool good () const
 Returns whether the underlying file stream can be used (is good()) More...
 
int peek ()
 Returns the next character to be read by an actual parse. More...
 
void putback (char c)
 Pushes a character back into the stream to be read by the next actual parse. More...
 
std::string read (int numBytes)
 Reads the defined number of bytes and returns them as a string. More...
 
 ~BinaryInputDevice ()
 Destructor. More...
 

Private Member Functions

int checkType (BinaryFormatter::DataType t)
 

Private Attributes

const bool myAmTyped
 
char myBuffer [10000]
 The buffer used for string parsing. More...
 
const bool myEnableValidation
 Information whether types shall be checked. More...
 
std::ifstream myStream
 The encapsulated stream. More...
 

Friends

BinaryInputDeviceoperator>> (BinaryInputDevice &os, char &c)
 Reads a char from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, unsigned char &c)
 Reads an unsigned char from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, int &i)
 Reads an int from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, double &f)
 Reads a double from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, bool &b)
 Reads a bool from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, std::string &s)
 Reads a string from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, std::vector< std::string > &v)
 Reads a string vector from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, std::vector< int > &v)
 Reads a string vector from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, std::vector< std::vector< int > > &v)
 Reads a string vector from the file (input operator) More...
 
BinaryInputDeviceoperator>> (BinaryInputDevice &os, Position &p)
 Reads a Position from the file (input operator) More...
 

Detailed Description

Encapsulates binary reading operations on a file.

This class opens a binary file stream for reading and offers read access functions on it.

Please note that the byte order is undefined. Also the length of each type is not defined on a global scale and may differ across compilers or platforms.

Todo:

Recheck whether this class could be replaced by a "normal InputDevice"

Maybe some kind of a well-defined types should be used (so that they have a well-defined length)

Maybe the byte-order should be defined

Definition at line 65 of file BinaryInputDevice.h.

Constructor & Destructor Documentation

◆ BinaryInputDevice()

BinaryInputDevice::BinaryInputDevice ( const std::string &  name,
const bool  isTyped = false,
const bool  doValidate = false 
)

Constructor.

Parameters
[in]nameThe name of the file to open for reading

Definition at line 47 of file BinaryInputDevice.cpp.

◆ ~BinaryInputDevice()

BinaryInputDevice::~BinaryInputDevice ( )

Destructor.

Definition at line 53 of file BinaryInputDevice.cpp.

Member Function Documentation

◆ checkType()

int BinaryInputDevice::checkType ( BinaryFormatter::DataType  t)
private

Definition at line 82 of file BinaryInputDevice.cpp.

References myAmTyped, myEnableValidation, and myStream.

Referenced by operator>>().

◆ good()

bool BinaryInputDevice::good ( ) const

Returns whether the underlying file stream can be used (is good())

Returns
Whether the file is good

Definition at line 57 of file BinaryInputDevice.cpp.

References myStream.

◆ peek()

int BinaryInputDevice::peek ( )

Returns the next character to be read by an actual parse.

Returns
the next character which will be returned

Definition at line 63 of file BinaryInputDevice.cpp.

References myStream.

Referenced by SUMOSAXReader::parseNext(), and SUMOSAXAttributesImpl_Binary::SUMOSAXAttributesImpl_Binary().

◆ putback()

void BinaryInputDevice::putback ( char  c)

Pushes a character back into the stream to be read by the next actual parse.

Parameters
[in]cThe char to store in the stream

Definition at line 76 of file BinaryInputDevice.cpp.

References myStream.

Referenced by SUMOSAXReader::parseNext(), and SUMOSAXAttributesImpl_Binary::SUMOSAXAttributesImpl_Binary().

◆ read()

std::string BinaryInputDevice::read ( int  numBytes)

Reads the defined number of bytes and returns them as a string.

Parameters
[in]numBytesThe number of bytes to read
Returns
the string read

Definition at line 69 of file BinaryInputDevice.cpp.

References myBuffer, and myStream.

Referenced by SUMOSAXReader::parseNext().

Friends And Related Function Documentation

◆ operator>> [1/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
char &  c 
)
friend

Reads a char from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the char from
[in]cThe char to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 96 of file BinaryInputDevice.cpp.

◆ operator>> [2/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
unsigned char &  c 
)
friend

Reads an unsigned char from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the char from
[in]cThe char to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 104 of file BinaryInputDevice.cpp.

◆ operator>> [3/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
int &  i 
)
friend

Reads an int from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the int from
[in]iThe int to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 112 of file BinaryInputDevice.cpp.

◆ operator>> [4/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
double &  f 
)
friend

Reads a double from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the double from
[in]iThe double to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 120 of file BinaryInputDevice.cpp.

◆ operator>> [5/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
bool &  b 
)
friend

Reads a bool from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the bool from
[in]iThe bool to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 134 of file BinaryInputDevice.cpp.

◆ operator>> [6/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
std::string &  s 
)
friend

Reads a string from the file (input operator)

Reads the length of the string as an int, first. Reads then the specified number of chars into "myBuffer". Please note that the buffer has a fixed size - longer strings will cause an error.

Parameters
[in,out]osThe BinaryInputDevice to read the string from
[in]sThe string to store the read value into
Returns
The used BinaryInputDevice for further processing
Todo:
Use either a buffer with a flexible size or report an error if the buffer is too small!

Definition at line 143 of file BinaryInputDevice.cpp.

◆ operator>> [7/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
std::vector< std::string > &  v 
)
friend

Reads a string vector from the file (input operator)

Reads the length of the vector as an int, first. Reads then the specified number of strings using the string input operator. Please note that the buffer has a fixed size - longer strings will cause an error.

Parameters
[in,out]osThe BinaryInputDevice to read the string from
[in]vThe string vector to store the read value into
Returns
The used BinaryInputDevice for further processing
Todo:
Use either a buffer with a flexible size or report an error if the buffer is too small!

Definition at line 160 of file BinaryInputDevice.cpp.

◆ operator>> [8/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
std::vector< int > &  v 
)
friend

Reads a string vector from the file (input operator)

Reads the length of the vector as an int, first. Reads then the specified number of strings using the string input operator. Please note that the buffer has a fixed size - longer strings will cause an error.

Parameters
[in,out]osThe BinaryInputDevice to read the string from
[in]vThe string vector to store the read value into
Returns
The used BinaryInputDevice for further processing
Todo:
Use either a buffer with a flexible size or report an error if the buffer is too small!

Definition at line 175 of file BinaryInputDevice.cpp.

◆ operator>> [9/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
std::vector< std::vector< int > > &  v 
)
friend

Reads a string vector from the file (input operator)

Reads the length of the vector as an int, first. Reads then the specified number of strings using the string input operator. Please note that the buffer has a fixed size - longer strings will cause an error.

Parameters
[in,out]osThe BinaryInputDevice to read the string from
[in]vThe string vector to store the read value into
Returns
The used BinaryInputDevice for further processing
Todo:
Use either a buffer with a flexible size or report an error if the buffer is too small!

Definition at line 190 of file BinaryInputDevice.cpp.

◆ operator>> [10/10]

BinaryInputDevice& operator>> ( BinaryInputDevice os,
Position p 
)
friend

Reads a Position from the file (input operator)

Parameters
[in,out]osThe BinaryInputDevice to read the Position from
[in]pThe Position to store the read value into
Returns
The used BinaryInputDevice for further processing

Definition at line 205 of file BinaryInputDevice.cpp.

Field Documentation

◆ myAmTyped

const bool BinaryInputDevice::myAmTyped
private

Definition at line 227 of file BinaryInputDevice.h.

Referenced by checkType().

◆ myBuffer

char BinaryInputDevice::myBuffer[10000]
private

The buffer used for string parsing.

Definition at line 233 of file BinaryInputDevice.h.

Referenced by operator>>(), and read().

◆ myEnableValidation

const bool BinaryInputDevice::myEnableValidation
private

Information whether types shall be checked.

Definition at line 230 of file BinaryInputDevice.h.

Referenced by checkType().

◆ myStream

std::ifstream BinaryInputDevice::myStream
private

The encapsulated stream.

Definition at line 225 of file BinaryInputDevice.h.

Referenced by checkType(), good(), operator>>(), peek(), putback(), and read().


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