SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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_COLOR, BF_NODE_TYPE, BF_EDGE_FUNCTION
}
 data types in binary output More...

Public Member Functions

 BinaryFormatter ()
 Constructor.
void closeOpener (std::ostream &into)
 Ends the most recently opened element start.
bool closeTag (std::ostream &into, bool abbreviated=false)
 Closes the most recently opened tag.
void openTag (std::ostream &into, const std::string &xmlElement)
 Opens an XML tag.
void openTag (std::ostream &into, const SumoXMLTag &xmlElement)
 Opens an XML tag.
void writeAttr (std::ostream &into, const std::string &attr, const std::string &val)
 writes an arbitrary attribute
bool writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::string xmlParams="", const std::string &attrs="", const std::string &comment="")
 Writes an XML header with optional configuration.
virtual ~BinaryFormatter ()
 Destructor.

Static Public Member Functions

template<typename T >
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const T &val)
 writes a named attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SUMOReal &val)
 writes a named float attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const int &val)
 writes a named integer attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SumoXMLNodeType &val)
 writes a node type attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const SumoXMLEdgeFunc &val)
 writes an edge function attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const Position &val)
 writes a position attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const PositionVector &val)
 writes a position vector attribute
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const Boundary &val)
 writes a boundary attribute

Private Member Functions

void writeStringList (std::ostream &into, const std::vector< std::string > &list)
 writes a list of strings

Static Private Member Functions

static void writeAttrHeader (std::ostream &into, const SumoXMLAttr attr, const DataType type)
 writes the header for an arbitrary attribute

Private Attributes

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

Detailed Description

Output formatter for plain XML output.

BinaryFormatter format XML like output into the output stream.

Definition at line 54 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_COLOR 
BF_NODE_TYPE 
BF_EDGE_FUNCTION 

Definition at line 57 of file BinaryFormatter.h.

Constructor & Destructor Documentation

BinaryFormatter::BinaryFormatter ( )

Constructor.

Definition at line 50 of file BinaryFormatter.cpp.

virtual BinaryFormatter::~BinaryFormatter ( )
inlinevirtual

Destructor.

Definition at line 95 of file BinaryFormatter.h.

Member Function Documentation

void BinaryFormatter::closeOpener ( std::ostream &  into)
virtual

Ends the most recently opened element start.

Does nothing.

Parameters
[in]intoThe output stream to use

Implements OutputFormatter.

Definition at line 105 of file BinaryFormatter.cpp.

bool BinaryFormatter::closeTag ( std::ostream &  into,
bool  abbreviated = false 
)
virtual

Closes the most recently opened tag.

Parameters
[in]intoThe output stream to use
[in]namewhether abbreviated closing is performed
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, FileHelpers::writeByte(), and FileHelpers::writeInt().

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 89 of file BinaryFormatter.cpp.

References SUMOXMLDefinitions::Tags.

Referenced by 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 97 of file BinaryFormatter.cpp.

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

void BinaryFormatter::writeAttr ( std::ostream &  into,
const std::string &  attr,
const std::string &  val 
)
virtual

writes an arbitrary attribute

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

Implements OutputFormatter.

Definition at line 122 of file BinaryFormatter.cpp.

References SUMOXMLDefinitions::Attrs.

template<typename T >
void BinaryFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  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 272 of file BinaryFormatter.h.

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

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

writes a named float attribute

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

Definition at line 129 of file BinaryFormatter.cpp.

References BF_FLOAT, writeAttrHeader(), and FileHelpers::writeFloat().

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

writes a named integer attribute

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

Definition at line 135 of file BinaryFormatter.cpp.

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

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

writes a node type attribute

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

Definition at line 141 of file BinaryFormatter.cpp.

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

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

writes an edge function attribute

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

Definition at line 147 of file BinaryFormatter.cpp.

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

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

writes a position attribute

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

Definition at line 153 of file BinaryFormatter.cpp.

References BF_POSITION_2D, BF_POSITION_3D, writeAttrHeader(), FileHelpers::writeFloat(), Position::x(), Position::y(), and Position::z().

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

writes a position vector attribute

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

Definition at line 167 of file BinaryFormatter.cpp.

References PositionVector::begin(), BF_LIST, BF_POSITION_2D, BF_POSITION_3D, PositionVector::end(), PositionVector::size(), writeAttrHeader(), FileHelpers::writeByte(), FileHelpers::writeFloat(), and FileHelpers::writeInt().

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

writes a boundary attribute

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

Definition at line 185 of file BinaryFormatter.cpp.

References BF_LIST, BF_POSITION_2D, writeAttrHeader(), FileHelpers::writeByte(), FileHelpers::writeFloat(), FileHelpers::writeInt(), Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().

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 248 of file BinaryFormatter.h.

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

Referenced by writeAttr().

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

writes a list of strings

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

Definition at line 55 of file BinaryFormatter.cpp.

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

Referenced by writeXMLHeader().

bool BinaryFormatter::writeXMLHeader ( std::ostream &  into,
const std::string &  rootElement,
const std::string  xmlParams = "",
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]xmlParamsAdditional parameters (such as encoding) to include in the <?xml> declaration
[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 65 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 265 of file BinaryFormatter.h.

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


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