SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PlainXMLFormatter Class Reference

Output formatter for plain XML output. More...

#include <PlainXMLFormatter.h>

Inheritance diagram for PlainXMLFormatter:
OutputFormatter

Public Member Functions

bool closeTag (std::ostream &into)
 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.
 PlainXMLFormatter (const unsigned int defaultIndentation=0)
 Constructor.
void writeAttr (std::ostream &into, const std::string &attr, const std::string &val)
 writes an arbitrary attribute
bool writeHeader (std::ostream &into, const SumoXMLTag &rootElement)
 Writes an XML header with optional configuration.
bool writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::string &attrs="", const std::string &comment="")
 Writes an XML header with optional configuration.
virtual ~PlainXMLFormatter ()
 Destructor.

Static Public Member Functions

template<class T >
static void writeAttr (std::ostream &into, const SumoXMLAttr attr, const T &val)
 writes a named attribute

Private Attributes

unsigned int myDefaultIndentation
 The initial indentation level.
bool myHavePendingOpener
 whether a closing ">" might be missing
std::vector< std::string > myXMLStack
 The stack of begun xml elements.

Detailed Description

Output formatter for plain XML output.

PlainXMLFormatter format XML like output into the output stream.

Definition at line 45 of file PlainXMLFormatter.h.

Constructor & Destructor Documentation

PlainXMLFormatter::PlainXMLFormatter ( const unsigned int  defaultIndentation = 0)

Constructor.

Definition at line 43 of file PlainXMLFormatter.cpp.

virtual PlainXMLFormatter::~PlainXMLFormatter ( )
inlinevirtual

Destructor.

Definition at line 52 of file PlainXMLFormatter.h.

Member Function Documentation

bool PlainXMLFormatter::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 97 of file PlainXMLFormatter.cpp.

References myDefaultIndentation, myHavePendingOpener, and myXMLStack.

void PlainXMLFormatter::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 80 of file PlainXMLFormatter.cpp.

References myDefaultIndentation, myHavePendingOpener, and myXMLStack.

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

void PlainXMLFormatter::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 91 of file PlainXMLFormatter.cpp.

References openTag(), and toString().

void PlainXMLFormatter::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 114 of file PlainXMLFormatter.cpp.

template<class T >
static void PlainXMLFormatter::writeAttr ( std::ostream &  into,
const SumoXMLAttr  attr,
const T &  val 
)
inlinestatic

writes a named attribute

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

Definition at line 131 of file PlainXMLFormatter.h.

References toString().

bool PlainXMLFormatter::writeHeader ( std::ostream &  into,
const SumoXMLTag rootElement 
)

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

Definition at line 49 of file PlainXMLFormatter.cpp.

References OptionsCont::getOptions(), myXMLStack, openTag(), and OptionsCont::writeXMLHeader().

bool PlainXMLFormatter::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 60 of file PlainXMLFormatter.cpp.

References OptionsCont::getOptions(), myHavePendingOpener, myXMLStack, openTag(), and OptionsCont::writeXMLHeader().

Field Documentation

unsigned int PlainXMLFormatter::myDefaultIndentation
private

The initial indentation level.

Definition at line 141 of file PlainXMLFormatter.h.

Referenced by closeTag(), and openTag().

bool PlainXMLFormatter::myHavePendingOpener
private

whether a closing ">" might be missing

Definition at line 144 of file PlainXMLFormatter.h.

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

std::vector<std::string> PlainXMLFormatter::myXMLStack
private

The stack of begun xml elements.

Definition at line 138 of file PlainXMLFormatter.h.

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


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