![]() |
Eclipse SUMO - Simulation of Urban MObility
|
Output formatter for CSV output. More...
#include <CSVFormatter.h>
Public Member Functions | |
bool | closeTag (std::ostream &into, const std::string &comment="") |
Closes the most recently opened tag. | |
CSVFormatter (const std::string &columnNames, const char separator=';') | |
Constructor. | |
OutputFormatterType | getType () |
Returns the type of formatter being used. | |
void | openTag (std::ostream &into, const std::string &xmlElement) |
Keeps track of an open XML tag by adding a new element to the stack. | |
void | openTag (std::ostream &into, const SumoXMLTag &xmlElement) |
Keeps track of an open XML tag by adding a new element to the stack. | |
void | setExpectedAttributes (const SumoXMLAttrMask &expected, const int depth=2) |
Set the expected attributes to write. This is used for tracking which attributes are expected in table like outputs. This should be not necessary but at least in the initial phase of implementing CSV and Parquet it helps a lot to track errors. | |
template<> | |
void | writeAttr (std::ostream &, const SumoXMLAttr attr, const std::string &val) |
template<class T > | |
void | writeAttr (std::ostream &into, const std::string &attr, const T &val) |
template<> | |
void | writeAttr (std::ostream &into, const SumoXMLAttr attr, const double &val) |
template<class T > | |
void | writeAttr (std::ostream &into, const SumoXMLAttr attr, const T &val) |
writes a named attribute | |
void | writeNull (std::ostream &, const SumoXMLAttr attr) |
virtual void | writePadding (std::ostream &into, const std::string &val) |
Writes some whitespace to format the output. This method is only implemented for XML output. | |
virtual void | writePreformattedTag (std::ostream &into, const std::string &val) |
Writes a preformatted tag to the device but ensures that any pending tags are closed. This method is only implemented for XML output. | |
void | writeTime (std::ostream &, const SumoXMLAttr attr, const SUMOTime val) |
virtual bool | writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::map< SumoXMLAttr, std::string > &attrs, bool includeConfig=true) |
Writes an XML header with optional configuration. | |
bool | wroteHeader () const |
Returns whether a header has been written. Useful to detect whether a file is being used by multiple sources. | |
virtual | ~CSVFormatter () |
Destructor. | |
Private Member Functions | |
void | checkAttr (const SumoXMLAttr attr) |
Helper function to keep track of the written attributes and accumulate the header. It checks whether the written attribute is expected in the column based format. The check does only apply to the deepest level of the XML hierarchy and not to the order of the columns just to the presence. | |
Private Attributes | |
bool | myCheckColumns = false |
whether the columns should be checked for completeness | |
int | myCurrentDepth = 0 |
the current depth of the XML hierarchy (excluding the root element) | |
std::string | myCurrentTag |
the currently read tag (only valid when generating the header) | |
SumoXMLAttrMask | myExpectedAttrs |
which CSV columns are expected (just for checking completeness) | |
std::vector< std::string > | myHeader |
the CSV header | |
const std::string | myHeaderFormat |
the format to use for the column names | |
int | myMaxDepth = 0 |
the maximum depth of the XML hierarchy (excluding the root element) | |
SumoXMLAttrMask | mySeenAttrs |
which CSV columns have been set (just for checking completeness) | |
const char | mySeparator |
The value separator. | |
const OutputFormatterType | myType |
the type of formatter being used (XML, CSV, Parquet, etc.) | |
bool | myWroteHeader = false |
whether the CSV header line has been written | |
std::vector< std::unique_ptr< std::ostringstream > > | myXMLStack |
The attributes to write for each begun xml element (excluding the root element) | |
Output formatter for CSV output.
Definition at line 38 of file CSVFormatter.h.
CSVFormatter::CSVFormatter | ( | const std::string & | columnNames, |
const char | separator = ';' |
||
) |
Constructor.
Definition at line 30 of file CSVFormatter.cpp.
References myHeaderFormat, and myWroteHeader.
|
inlinevirtual |
Destructor.
Definition at line 44 of file CSVFormatter.h.
|
inlineprivate |
Helper function to keep track of the written attributes and accumulate the header. It checks whether the written attribute is expected in the column based format. The check does only apply to the deepest level of the XML hierarchy and not to the order of the columns just to the presence.
[in] | attr | The attribute (name) |
Definition at line 121 of file CSVFormatter.h.
References myCheckColumns, myCurrentDepth, myCurrentTag, myExpectedAttrs, myHeader, myHeaderFormat, myMaxDepth, mySeenAttrs, myWroteHeader, TLF, and toString().
Referenced by writeAttr(), writeAttr(), writeAttr(), writeNull(), and writeTime().
|
virtual |
Closes the most recently opened tag.
[in] | into | The output stream to use |
Implements OutputFormatter.
Definition at line 69 of file CSVFormatter.cpp.
References joinToString(), myCheckColumns, myCurrentDepth, myExpectedAttrs, myHeader, myMaxDepth, mySeenAttrs, mySeparator, myWroteHeader, myXMLStack, toString(), WRITE_ERRORF, and WRITE_WARNING.
|
inlineinherited |
Returns the type of formatter being used.
Definition at line 149 of file OutputFormatter.h.
References OutputFormatter::myType.
Referenced by OutputDevice::writeAttr(), OutputDevice::writeAttr(), OutputDevice::writeFuncAttr(), and OutputDevice::writeOptionalAttr().
|
virtual |
Keeps track of an open XML tag by adding a new element to the stack.
[in] | into | The output stream to use (unused) |
[in] | xmlElement | Name of element to open (unused) |
Implements OutputFormatter.
Definition at line 39 of file CSVFormatter.cpp.
References myCurrentDepth, myCurrentTag, myMaxDepth, myWroteHeader, myXMLStack, and WRITE_WARNINGF.
|
virtual |
Keeps track of an open XML tag by adding a new element to the stack.
[in] | into | The output stream to use (unused) |
[in] | xmlElement | Name of element to open (unused) |
Implements OutputFormatter.
Definition at line 54 of file CSVFormatter.cpp.
References myCurrentDepth, myCurrentTag, myMaxDepth, myWroteHeader, myXMLStack, toString(), and WRITE_WARNINGF.
|
inlinevirtual |
Set the expected attributes to write. This is used for tracking which attributes are expected in table like outputs. This should be not necessary but at least in the initial phase of implementing CSV and Parquet it helps a lot to track errors.
[in] | expected | which attributes are to be written (at the deepest XML level) |
[in] | depth | the maximum XML hierarchy depth (excluding the root) |
Reimplemented from OutputFormatter.
Definition at line 108 of file CSVFormatter.h.
References myCheckColumns, myExpectedAttrs, and myMaxDepth.
|
inline |
Definition at line 188 of file CSVFormatter.h.
References checkAttr(), myCurrentDepth, mySeparator, and myXMLStack.
|
inline |
Definition at line 82 of file CSVFormatter.h.
References myCheckColumns, myCurrentDepth, myCurrentTag, myHeader, mySeparator, myWroteHeader, myXMLStack, and toString().
|
inline |
Definition at line 177 of file CSVFormatter.h.
References checkAttr(), myCurrentDepth, mySeparator, myXMLStack, and toString().
|
inline |
writes a named attribute
[in] | into | The output stream to use |
[in] | attr | The attribute (name) |
[in] | val | The attribute value |
Definition at line 76 of file CSVFormatter.h.
References checkAttr(), myCurrentDepth, mySeparator, myXMLStack, and toString().
|
inline |
Definition at line 94 of file CSVFormatter.h.
References checkAttr(), myCurrentDepth, mySeparator, and myXMLStack.
|
inlinevirtualinherited |
Writes some whitespace to format the output. This method is only implemented for XML output.
[in] | into | The output stream to use |
[in] | val | The whitespace |
Reimplemented in PlainXMLFormatter.
Definition at line 135 of file OutputFormatter.h.
References UNUSED_PARAMETER.
Referenced by OutputDevice::writePadding().
|
inlinevirtualinherited |
Writes a preformatted tag to the device but ensures that any pending tags are closed. This method is only implemented for XML output.
[in] | into | The output stream to use |
[in] | val | The preformatted data |
Reimplemented in PlainXMLFormatter.
Definition at line 124 of file OutputFormatter.h.
References UNUSED_PARAMETER.
Referenced by OutputDevice::writePreformattedTag().
|
inlinevirtual |
Implements OutputFormatter.
Definition at line 99 of file CSVFormatter.h.
References checkAttr(), myCurrentDepth, mySeparator, myXMLStack, and time2string().
|
inlinevirtualinherited |
Writes an XML header with optional configuration.
If something has been written (myXMLStack is not empty), nothing is written and false returned. The default implementation does nothing and returns false.
[in] | into | The output stream to use |
[in] | rootElement | The root element to use |
[in] | attrs | Additional attributes to save within the rootElement |
[in] | includeConfig | whether the current config should be included as XML comment |
Reimplemented in PlainXMLFormatter.
Definition at line 77 of file OutputFormatter.h.
References UNUSED_PARAMETER.
Referenced by OutputDevice::writeXMLHeader().
|
inlinevirtual |
Returns whether a header has been written. Useful to detect whether a file is being used by multiple sources.
Implements OutputFormatter.
Definition at line 104 of file CSVFormatter.h.
References myWroteHeader.
|
private |
whether the columns should be checked for completeness
Definition at line 163 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), setExpectedAttributes(), and writeAttr().
|
private |
the current depth of the XML hierarchy (excluding the root element)
Definition at line 157 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), openTag(), openTag(), writeAttr(), writeAttr(), writeAttr(), writeAttr(), writeNull(), and writeTime().
|
private |
the currently read tag (only valid when generating the header)
Definition at line 148 of file CSVFormatter.h.
Referenced by checkAttr(), openTag(), openTag(), and writeAttr().
|
private |
which CSV columns are expected (just for checking completeness)
Definition at line 166 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), and setExpectedAttributes().
|
private |
the CSV header
Definition at line 145 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), and writeAttr().
|
private |
the format to use for the column names
Definition at line 139 of file CSVFormatter.h.
Referenced by checkAttr(), and CSVFormatter().
|
private |
the maximum depth of the XML hierarchy (excluding the root element)
Definition at line 154 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), openTag(), openTag(), and setExpectedAttributes().
|
private |
which CSV columns have been set (just for checking completeness)
Definition at line 169 of file CSVFormatter.h.
Referenced by checkAttr(), and closeTag().
|
private |
The value separator.
Definition at line 142 of file CSVFormatter.h.
Referenced by closeTag(), writeAttr(), writeAttr(), writeAttr(), writeAttr(), writeNull(), and writeTime().
|
privateinherited |
the type of formatter being used (XML, CSV, Parquet, etc.)
Definition at line 167 of file OutputFormatter.h.
Referenced by OutputFormatter::getType().
|
private |
whether the CSV header line has been written
Definition at line 160 of file CSVFormatter.h.
Referenced by checkAttr(), closeTag(), CSVFormatter(), openTag(), openTag(), writeAttr(), and wroteHeader().
|
private |
The attributes to write for each begun xml element (excluding the root element)
Definition at line 151 of file CSVFormatter.h.
Referenced by closeTag(), openTag(), openTag(), writeAttr(), writeAttr(), writeAttr(), writeAttr(), writeNull(), and writeTime().