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 64 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 46 of file BinaryInputDevice.cpp.

◆ ~BinaryInputDevice()

BinaryInputDevice::~BinaryInputDevice ( )

Destructor.

Definition at line 52 of file BinaryInputDevice.cpp.

Member Function Documentation

◆ checkType()

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

Definition at line 81 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 56 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 62 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 75 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 68 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 95 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 103 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 111 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 119 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 133 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 142 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 159 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 174 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 189 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 204 of file BinaryInputDevice.cpp.

Field Documentation

◆ myAmTyped

const bool BinaryInputDevice::myAmTyped
private

Definition at line 226 of file BinaryInputDevice.h.

Referenced by checkType().

◆ myBuffer

char BinaryInputDevice::myBuffer[10000]
private

The buffer used for string parsing.

Definition at line 232 of file BinaryInputDevice.h.

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

◆ myEnableValidation

const bool BinaryInputDevice::myEnableValidation
private

Information whether types shall be checked.

Definition at line 229 of file BinaryInputDevice.h.

Referenced by checkType().

◆ myStream

std::ifstream BinaryInputDevice::myStream
private

The encapsulated stream.

Definition at line 224 of file BinaryInputDevice.h.

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


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