SUMO - Simulation of Urban MObility
BinaryFormatter Class Reference

Output formatter for plain XML output. More...

#include <BinaryFormatter.h>

Inheritance diagram for BinaryFormatter:
OutputFormatter

Public Types

enum  DataType {
  BF_BYTE, BF_INTEGER, BF_FLOAT, BF_STRING,
  BF_LIST, BF_XML_TAG_START, BF_XML_TAG_END, BF_XML_ATTRIBUTE,
  BF_EDGE, BF_LANE, BF_POSITION_2D, BF_POSITION_3D,
  BF_BOUNDARY, BF_COLOR, BF_NODE_TYPE, BF_EDGE_FUNCTION,
  BF_ROUTE, BF_SCALED2INT, BF_SCALED2INT_POSITION_2D, BF_SCALED2INT_POSITION_3D
}
 data types in binary output More...
 

Public Member Functions

 BinaryFormatter ()
 Constructor. More...
 
bool closeTag (std::ostream &into)
 Closes the most recently opened tag. More...
 
void openTag (std::ostream &into, const std::string &xmlElement)
 Opens an XML tag. More...
 
void openTag (std::ostream &into, const SumoXMLTag &xmlElement)
 Opens an XML tag. More...
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const bool &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SUMOReal &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const int &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const unsigned int &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SumoXMLNodeType &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SumoXMLEdgeFunc &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const Position &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const PositionVector &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const Boundary &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr attr, const RGBColor &val)
 
template<>
void writeAttr (std::ostream &into, const SumoXMLAttr, const std::vector< int > &val)
 
template<typename E >
bool writeHeader (std::ostream &into, const SumoXMLTag &rootElement)
 Writes a header with optional edge list and connections. More...
 
void writePreformattedTag (std::ostream &into, const std::string &val)
 writes a preformatted tag to the device but ensures that any pending tags are closed More...
 
bool writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::string &attrs="", const std::string &comment="")
 Writes an XML header with optional configuration. More...
 
virtual ~BinaryFormatter ()
 Destructor. More...
 

Static Public Member Functions

template<typename dummy , typename T >
static void writeAttr (dummy &into, const SumoXMLAttr attr, const T &val)
 writes an arbitrary attribute More...
 
template<typename dummy , typename T >
static void writeAttr (dummy &into, const std::string &attr, const T &val)
 writes a named attribute More...
 
template<typename dummy >
static void writeAttr (dummy &into, const SumoXMLAttr attr, const std::vector< const ROEdge * > &val)
 
template<typename dummy >
static void writeAttr (dummy &into, const SumoXMLAttr attr, const std::vector< const MSEdge * > &val)
 

Static Private Member Functions

static void writeAttrHeader (std::ostream &into, const SumoXMLAttr attr, const DataType type)
 writes the header for an arbitrary attribute More...
 
static void writePosition (std::ostream &into, const Position &val)
 writes a position More...
 
static void writeStringList (std::ostream &into, const std::vector< std::string > &list)
 writes a list of strings More...
 

Private Attributes

std::vector< SumoXMLTagmyXMLStack
 The stack of begun xml elements. More...
 

Detailed Description

Output formatter for plain XML output.

BinaryFormatter format XML like output into the output stream.

Definition at line 66 of file BinaryFormatter.h.

Member Enumeration Documentation

data types in binary output

Enumerator
BF_BYTE 
BF_INTEGER 
BF_FLOAT 
BF_STRING 
BF_LIST 
BF_XML_TAG_START 
BF_XML_TAG_END 
BF_XML_ATTRIBUTE 
BF_EDGE 
BF_LANE 
BF_POSITION_2D 
BF_POSITION_3D 
BF_BOUNDARY 
BF_COLOR 
BF_NODE_TYPE 
BF_EDGE_FUNCTION 
BF_ROUTE 
BF_SCALED2INT 
BF_SCALED2INT_POSITION_2D 
BF_SCALED2INT_POSITION_3D 

Definition at line 69 of file BinaryFormatter.h.

Constructor & Destructor Documentation

BinaryFormatter::BinaryFormatter ( )

Constructor.

Definition at line 53 of file BinaryFormatter.cpp.

virtual BinaryFormatter::~BinaryFormatter ( )
inlinevirtual

Destructor.

Definition at line 117 of file BinaryFormatter.h.

Member Function Documentation

bool BinaryFormatter::closeTag ( std::ostream &  into)
virtual

Closes the most recently opened tag.

Parameters
[in]intoThe output stream to use
Returns
Whether a further element existed in the stack and could be closed
Todo:
it is not verified that the topmost element was closed

Implements OutputFormatter.

Definition at line 110 of file BinaryFormatter.cpp.

References BF_XML_TAG_END, myXMLStack, and FileHelpers::writeByte().

void BinaryFormatter::openTag ( std::ostream &  into,
const std::string &  xmlElement 
)
virtual

Opens an XML tag.

An indentation, depending on the current xml-element-stack size, is written followed by the given xml element ("<" + xmlElement) The xml element is added to the stack, then.

Parameters
[in]intoThe output stream to use
[in]xmlElementName of element to open
Returns
The OutputDevice for further processing

Implements OutputFormatter.

Definition at line 94 of file BinaryFormatter.cpp.

References SUMOXMLDefinitions::Tags.

Referenced by writeHeader(), and writeXMLHeader().

void BinaryFormatter::openTag ( std::ostream &  into,
const SumoXMLTag xmlElement 
)
virtual

Opens an XML tag.

Helper method which finds the correct string before calling openTag.

Parameters
[in]intoThe output stream to use
[in]xmlElementId of the element to open

Implements OutputFormatter.

Definition at line 102 of file BinaryFormatter.cpp.

References BF_XML_TAG_START, myXMLStack, and FileHelpers::writeByte().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const bool val 
)

Definition at line 122 of file BinaryFormatter.cpp.

References BF_BYTE, writeAttrHeader(), and FileHelpers::writeByte().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const SUMOReal val 
)
void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const int val 
)

Definition at line 141 of file BinaryFormatter.cpp.

References BF_INTEGER, writeAttrHeader(), and FileHelpers::writeInt().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const unsigned int val 
)

Definition at line 148 of file BinaryFormatter.cpp.

References BF_INTEGER, writeAttrHeader(), and FileHelpers::writeInt().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const SumoXMLNodeType val 
)

Definition at line 155 of file BinaryFormatter.cpp.

References BF_NODE_TYPE, writeAttrHeader(), and FileHelpers::writeByte().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const SumoXMLEdgeFunc val 
)
template<typename dummy , typename T >
void BinaryFormatter::writeAttr ( dummy &  into,
const SumoXMLAttr  attr,
const T &  val 
)
static

writes an arbitrary attribute

Parameters
[in]intoThe output stream to use
[in]attrThe attribute (name)
[in]valThe attribute value

Definition at line 296 of file BinaryFormatter.h.

References BF_STRING, toString(), writeAttrHeader(), and FileHelpers::writeString().

Referenced by writeAttr(), and OutputDevice::writeAttr().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const Position val 
)

Definition at line 198 of file BinaryFormatter.cpp.

References BF_XML_ATTRIBUTE, FileHelpers::writeByte(), and writePosition().

template<typename dummy , typename T >
void BinaryFormatter::writeAttr ( dummy &  into,
const std::string &  attr,
const T &  val 
)
static

writes a named attribute

Parameters
[in]intoThe output stream to use
[in]attrThe attribute (name)
[in]valThe attribute value

Definition at line 303 of file BinaryFormatter.h.

References SUMOXMLDefinitions::Attrs, and writeAttr().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const PositionVector val 
)
template<typename dummy >
void BinaryFormatter::writeAttr ( dummy &  into,
const SumoXMLAttr  attr,
const std::vector< const ROEdge * > &  val 
)
static

Definition at line 324 of file BinaryFormatter.h.

References BF_ROUTE, writeAttrHeader(), and FileHelpers::writeEdgeVector().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const Boundary val 
)
template<typename dummy >
void BinaryFormatter::writeAttr ( dummy &  into,
const SumoXMLAttr  attr,
const std::vector< const MSEdge * > &  val 
)
static

Definition at line 331 of file BinaryFormatter.h.

References BF_ROUTE, writeAttrHeader(), and FileHelpers::writeEdgeVector().

void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const RGBColor val 
)
void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  ,
const std::vector< int > &  val 
)
static void BinaryFormatter::writeAttrHeader ( std::ostream &  into,
const SumoXMLAttr  attr,
const DataType  type 
)
inlinestaticprivate

writes the header for an arbitrary attribute

Parameters
[in]intoThe output stream to use
[in]attrThe attribute (name)
[in]typeThe attribute type

Definition at line 227 of file BinaryFormatter.h.

References BF_XML_ATTRIBUTE, and FileHelpers::writeByte().

Referenced by writeAttr().

template<typename E >
bool BinaryFormatter::writeHeader ( std::ostream &  into,
const SumoXMLTag rootElement 
)

Writes a header with optional edge list and connections.

If something has been written (myXMLStack is not empty), nothing is written and false returned. This header is only used by the binary formatter.

Parameters
[in]intoThe output stream to use
[in]rootElementThe root element to use

Definition at line 259 of file BinaryFormatter.h.

References SUMOXMLDefinitions::Attrs, BF_BYTE, BF_INTEGER, BF_LIST, BF_STRING, SUMOXMLDefinitions::EdgeFunctions, myXMLStack, SUMOXMLDefinitions::NodeTypes, openTag(), SUMOXMLDefinitions::Tags, VERSION_STRING, FileHelpers::writeByte(), FileHelpers::writeInt(), FileHelpers::writeString(), and writeStringList().

void BinaryFormatter::writePosition ( std::ostream &  into,
const Position val 
)
staticprivate

writes a position

Parameters
[in]intoThe output stream to use
[in]valthe position to write

Definition at line 168 of file BinaryFormatter.cpp.

References BF_POSITION_2D, BF_POSITION_3D, BF_SCALED2INT_POSITION_2D, BF_SCALED2INT_POSITION_3D, FileHelpers::writeByte(), FileHelpers::writeFloat(), FileHelpers::writeInt(), Position::x(), Position::y(), and Position::z().

Referenced by writeAttr().

void BinaryFormatter::writePreformattedTag ( std::ostream &  into,
const std::string &  val 
)
inlinevirtual

writes a preformatted tag to the device but ensures that any pending tags are closed

Parameters
[in]intoThe output stream to use
[in]valThe preformatted data

Implements OutputFormatter.

Definition at line 206 of file BinaryFormatter.h.

References FileHelpers::writeString().

void BinaryFormatter::writeStringList ( std::ostream &  into,
const std::vector< std::string > &  list 
)
staticprivate

writes a list of strings

Parameters
[in]intoThe output stream to use
[in]listthe list to write

Definition at line 58 of file BinaryFormatter.cpp.

References BF_LIST, BF_STRING, FileHelpers::writeByte(), FileHelpers::writeInt(), and FileHelpers::writeString().

Referenced by writeHeader(), and writeXMLHeader().

bool BinaryFormatter::writeXMLHeader ( std::ostream &  into,
const std::string &  rootElement,
const std::string &  attrs = "",
const std::string &  comment = "" 
)
virtual

Writes an XML header with optional configuration.

If something has been written (myXMLStack is not empty), nothing is written and false returned.

Parameters
[in]intoThe output stream to use
[in]rootElementThe root element to use
[in]attrsAdditional attributes to save within the rootElement
[in]commentAdditional comment (saved in front the rootElement)
Todo:

Check which parameter is used herein

Describe what is saved

Implements OutputFormatter.

Definition at line 68 of file BinaryFormatter.cpp.

References SUMOXMLDefinitions::Attrs, BF_BYTE, BF_STRING, SUMOXMLDefinitions::EdgeFunctions, myXMLStack, SUMOXMLDefinitions::NodeTypes, openTag(), SUMOXMLDefinitions::Tags, VERSION_STRING, FileHelpers::writeByte(), FileHelpers::writeString(), and writeStringList().

Field Documentation

std::vector<SumoXMLTag> BinaryFormatter::myXMLStack
private

The stack of begun xml elements.

Definition at line 252 of file BinaryFormatter.h.

Referenced by closeTag(), openTag(), writeHeader(), and writeXMLHeader().


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