|
SUMO - Simulation of Urban MObility
|
Static storage of an output device and its base (abstract) implementation. More...
#include <OutputDevice.h>
Static Public Member Functions | |
| static std::string | realString (const SUMOReal v, const int precision=OUTPUT_ACCURACY) |
| Helper method for string formatting. | |
static access methods to OutputDevices | |
| static OutputDevice & | getDevice (const std::string &name, const std::string &base="") |
| Returns the described OutputDevice. | |
| static bool | createDeviceByOption (const std::string &optionName, const std::string &rootElement="") |
| Creates the device using the output definition stored in the named option. | |
| static OutputDevice & | getDeviceByOption (const std::string &name) throw (IOError, InvalidArgument) |
| Returns the device described by the option. | |
| static void | closeAll () |
OutputDevice member methods | |
| static std::map< std::string, OutputDevice * > | myOutputDevices |
| map from names to output devices | |
| OutputFormatter * | myFormatter |
| The formatter for XML. | |
| const bool | myAmBinary |
| OutputDevice (const bool binary=false, const unsigned int defaultIndentation=0) | |
| Constructor. | |
| virtual | ~OutputDevice () |
| Destructor. | |
| virtual bool | ok () |
| returns the information whether one can write into the device | |
| void | close () |
| Closes the device and removes it from the dictionary. | |
| void | setPrecision (unsigned int precision=OUTPUT_ACCURACY) |
| Sets the precison or resets it to default. | |
| bool | writeXMLHeader (const std::string &rootElement, const std::string &attrs="", const std::string &comment="") |
| Writes an XML header with optional configuration. | |
| template<typename E > | |
| bool | writeHeader (const SumoXMLTag &rootElement) |
| OutputDevice & | openTag (const std::string &xmlElement) |
| Opens an XML tag. | |
| OutputDevice & | openTag (const SumoXMLTag &xmlElement) |
| Opens an XML tag. | |
| bool | closeTag () |
| Closes the most recently opened tag. | |
| OutputDevice & | writeAttr (std::string attr, std::string val) |
| writes an arbitrary attribute | |
| void | lf () |
| writes a line feed if applicable | |
| bool | isBinary () const |
| Returns whether we have a binary output. | |
| template<typename T > | |
| OutputDevice & | writeAttr (const SumoXMLAttr attr, const T &val) |
| writes a named attribute | |
| void | inform (const std::string &msg, const char progress=0) |
| Retrieves a message to this device. | |
| template<class T > | |
| OutputDevice & | operator<< (const T &t) |
| Abstract output operator. | |
| OutputDevice (const OutputDevice &) | |
| Invalidated copy constructor. | |
| virtual std::ostream & | getOStream ()=0 |
| Returns the associated ostream. | |
| virtual void | postWriteHook () |
| Called after every write access. | |
| OutputDevice & | operator= (const OutputDevice &) |
| Invalidated assignment operator. | |
Static storage of an output device and its base (abstract) implementation.
OutputDevices are basically a capsule around an std::ostream, which give a unified access to sockets, files and stdout.
Usually, an application builds as many output devices as needed. Each output device may also be used to save outputs from several sources (several detectors, for example). Building is done using OutputDevice::getDevice() what also parses the given output description in order to decide what kind of an OutputDevice shall be built. OutputDevices are closed via OutputDevice::closeAll(), normally called at the application's end.
Although everything that can be written to a stream can also be written to an OutputDevice, there is special support for XML tags (remembering all open tags to close them at the end). OutputDevices are still lacking support for function pointers with the '<<' operator (no endl, use '
'). The most important method to implement in subclasses is getOStream, the most used part of the interface is the '<<' operator.
The Boolean markers are used rarely and might get removed in future versions.
Definition at line 70 of file OutputDevice.h.
|
virtual |
| OutputDevice::OutputDevice | ( | const OutputDevice & | ) |
Invalidated copy constructor.
| void OutputDevice::close | ( | ) |
Closes the device and removes it from the dictionary.
Definition at line 183 of file OutputDevice.cpp.
References closeTag(), and myOutputDevices.
Referenced by RONet::closeOutput(), GUIDialog_ViewSettings::onCmdExportSetting(), GUIDialog_Breakpoints::onCmdSave(), GUIParameterTracker::onCmdSave(), PCPolyContainer::save(), RODFDetectorCon::save(), GUISelectedStorage::save(), RODFDetectorCon::saveAsPOIs(), GUIDialog_ViewSettings::saveDecals(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_XML::writeJoinedJunctions(), NWFrame::writeNetwork(), NWWriter_SUMO::writeNetwork(), NWWriter_XML::writeNodes(), NWWriter_DlrNavteq::writeNodesUnsplitted(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeStreetSigns(), NWWriter_XML::writeTrafficLights(), and RODFDetectorCon::writeValidationDetectors().
|
static |
Closes all registered devices
Definition at line 132 of file OutputDevice.cpp.
References myOutputDevices.
Referenced by SystemFrame::close(), and GUIRunThread::deleteSim().
| bool OutputDevice::closeTag | ( | ) |
Closes the most recently opened tag.
The topmost xml-element from the stack is written into the stream as a closing element. Depending on the formatter used this may be something like "</" + element + ">" or "/>" or nothing at all.
Definition at line 223 of file OutputDevice.cpp.
References OutputFormatter::closeTag(), getOStream(), myFormatter, and postWriteHook().
Referenced by RORouteHandler::addStop(), close(), RORouteHandler::closePerson(), MSPersonControl::erase(), MSVTypeProbe::execute(), RORouteHandler::myStartElement(), RODFRouteCont::save(), PCPolyContainer::save(), RODFDetectorCon::save(), ROVehicle::saveAllAsXML(), MSVehicleControl::scheduleVehicleRemoval(), MSVTKExport::write(), MSFCDExport::write(), MSEmissionExport::write(), MSQueueExport::write(), MSFullExport::write(), MSXMLRawOut::write(), SUMOVTypeParameter::write(), MSMeanData_HBEFA::MSLaneMeanDataValues::write(), MSMeanData_Harmonoise::MSLaneMeanDataValues::write(), MSMeanData_Net::MSLaneMeanDataValues::write(), ODMatrix::write(), MSInstantInductLoop::write(), NBSign::writeAsPOI(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), MSQueueExport::writeEdge(), MSFullExport::writeEdge(), MSXMLRawOut::writeEdge(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitters(), ODMatrix::writeFlows(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeInternalNodes(), NWWriter_XML::writeJoinedJunctions(), NWWriter_SUMO::writeJunction(), MSQueueExport::writeLane(), MSFullExport::writeLane(), MSXMLRawOut::writeLane(), NWWriter_SUMO::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWWriter_SUMO::writeProhibitions(), NWWriter_SUMO::writeRoundabout(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), SUMOVehicleParameter::writeStops(), MSFullExport::writeTLS(), NWWriter_SUMO::writeTrafficLights(), RODFDetectorCon::writeValidationDetectors(), MSXMLRawOut::writeVehicle(), MSFullExport::writeVehicles(), RORouteDef::writeXMLDefinition(), RORoute::writeXMLDefinition(), MSRouteProbe::writeXMLOutput(), and MSMeanData::writeXMLOutput().
|
static |
Creates the device using the output definition stored in the named option.
Creates and returns the device named by the option. Asks whether the option and retrieves the name from the option if so. Optionally the XML header gets written as well. Returns whether a device was created (option was set).
Please note, that we do not have to consider the "application base" herein, because this call is only used to get file names of files referenced within XML-declarations of structures which paths already is aware of the cwd.
| [in] | optionName | The name of the option to use for retrieving the output definition |
| [in] | rootElement | The root element to use (XML-output) |
| IOError | If the output could not be built for any reason (error message is supplied) |
Definition at line 104 of file OutputDevice.cpp.
References getDevice(), OptionsCont::getOptions(), and writeXMLHeader().
Referenced by MSFrame::buildStreams(), MSDevice_Vehroutes::init(), and main().
|
static |
Returns the described OutputDevice.
Creates and returns the named device. "stdout" and "-" refer to standard out, "hostname:port" initiates socket connection. Otherwise a filename is assumed and the second parameter may be used to give a base directory. If there already is a device with the same name this one is returned.
| [in] | name | The description of the output name/port/whatever |
| [in] | base | The base path the application is run within |
| IOError | If the output could not be built for any reason (error message is supplied) |
Definition at line 65 of file OutputDevice.cpp.
References TplConvert::_2int(), FileHelpers::checkForRelativity(), OutputDevice_COUT::getDevice(), OutputDevice_CERR::getDevice(), getOStream(), FileHelpers::isSocket(), myOutputDevices, and setPrecision().
Referenced by NLHandler::addE1Detector(), NLHandler::addE2Detector(), NLHandler::addEdgeLaneMeanData(), NLHandler::addInstantE1Detector(), NLHandler::addRouteProbeDetector(), NLHandler::addVTypeProbeDetector(), NLHandler::beginE3Detector(), NLDiscreteEventBuilder::buildSaveTLStateCommand(), NLDiscreteEventBuilder::buildSaveTLSwitchesCommand(), NLDiscreteEventBuilder::buildSaveTLSwitchStatesCommand(), createDeviceByOption(), getDeviceByOption(), MsgHandler::initOutputOptions(), MSCalibrator::MSCalibrator(), MsgHandler::MsgHandler(), GUIDialog_ViewSettings::onCmdExportSetting(), GUIDialog_Breakpoints::onCmdSave(), GUIDialog_EditViewport::onCmdSave(), GUIParameterTracker::onCmdSave(), RONet::openOutput(), GUILoadThread::run(), PCPolyContainer::save(), RODFDetectorCon::save(), GUISelectedStorage::save(), RODFDetectorCon::saveAsPOIs(), GUIDialog_ViewSettings::saveDecals(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_XML::writeJoinedJunctions(), NWWriter_DlrNavteq::writeLinksUnsplitted(), NWWriter_OpenDrive::writeNetwork(), NWFrame::writeNetwork(), NWWriter_MATSim::writeNetwork(), NWWriter_SUMO::writeNetwork(), NWWriter_XML::writeNodes(), NWWriter_DlrNavteq::writeNodesUnsplitted(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeStreetSigns(), NWWriter_XML::writeTrafficLights(), and RODFDetectorCon::writeValidationDetectors().
|
static |
Returns the device described by the option.
Returns the device named by the option. If the option is unknown, unset or the device was not created before, InvalidArgument is thrown.
Please note, that we do not have to consider the "application base" herein.
| [in] | name | The name of the option to use for retrieving the output definition |
| IOError | If the output could not be built for any reason (error message is supplied) |
| InvalidArgument | If the option with the given name does not exist |
Definition at line 122 of file OutputDevice.cpp.
References getDevice(), OptionsCont::getOptions(), and OptionsCont::getString().
Referenced by MSPersonControl::erase(), MSDevice_HBEFA::generateOutput(), MSDevice_Tripinfo::generateOutput(), MSDevice_Vehroutes::generateOutput(), main(), MSVehicleControl::scheduleVehicleRemoval(), and MSNet::writeOutput().
|
protectedpure virtual |
Returns the associated ostream.
Implemented in GUIMessageWindow::MsgOutputDevice, OutputDevice_Network, MsgRetrievingFunction< T >, OutputDevice_String, OutputDevice_File, OutputDevice_CERR, and OutputDevice_COUT.
Referenced by closeTag(), getDevice(), inform(), lf(), ok(), openTag(), operator<<(), setPrecision(), writeAttr(), writeHeader(), and writeXMLHeader().
| void OutputDevice::inform | ( | const std::string & | msg, |
| const char | progress = 0 |
||
| ) |
Retrieves a message to this device.
Implementation of the MessageRetriever interface. Writes the given message to the output device.
| [in] | msg | The msg to write to the device |
Definition at line 237 of file OutputDevice.cpp.
References getOStream(), and postWriteHook().
|
inline |
Returns whether we have a binary output.
Definition at line 251 of file OutputDevice.h.
References myAmBinary.
Referenced by MSDevice_Vehroutes::generateOutput().
|
inline |
writes a line feed if applicable
Definition at line 241 of file OutputDevice.h.
References getOStream(), and myAmBinary.
Referenced by NWWriter_SUMO::writeLocation(), NWWriter_SUMO::writeNetwork(), and NWWriter_SUMO::writeTrafficLights().
|
virtual |
returns the information whether one can write into the device
Definition at line 177 of file OutputDevice.cpp.
References getOStream().
| OutputDevice & OutputDevice::openTag | ( | const std::string & | xmlElement | ) |
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.
| [in] | xmlElement | Name of element to open |
Definition at line 209 of file OutputDevice.cpp.
References getOStream(), myFormatter, and OutputFormatter::openTag().
Referenced by RORouteHandler::addStop(), MSPerson::MSPersonStage_Walking::beginEventOutput(), MSPerson::MSPersonStage_Driving::beginEventOutput(), MSPerson::MSPersonStage_Waiting::beginEventOutput(), MSPerson::MSPersonStage_Walking::endEventOutput(), MSPerson::MSPersonStage_Driving::endEventOutput(), MSPerson::MSPersonStage_Waiting::endEventOutput(), MSPersonControl::erase(), MSVTypeProbe::execute(), MSDevice_HBEFA::generateOutput(), MSDevice_Vehroutes::generateOutput(), MSDevice_Tripinfo::generateOutput(), RORouteHandler::myStartElement(), RODFRouteCont::save(), PCPolyContainer::save(), RODFDetectorCon::save(), RODFDetectorCon::saveAsPOIs(), MSPerson::MSPersonStage_Walking::tripInfoOutput(), MSPerson::MSPersonStage_Driving::tripInfoOutput(), MSPerson::MSPersonStage_Waiting::tripInfoOutput(), MSVTKExport::write(), MSEmissionExport::write(), MSFCDExport::write(), MSQueueExport::write(), MSFullExport::write(), MSXMLRawOut::write(), SUMOVTypeParameter::write(), ODMatrix::write(), MSInstantInductLoop::write(), SUMOVehicleParameter::write(), NBSign::writeAsPOI(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), MSQueueExport::writeEdge(), MSFullExport::writeEdge(), MSXMLRawOut::writeEdge(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), ODMatrix::writeFlows(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeInternalNodes(), NWWriter_XML::writeJoinedJunctions(), NWWriter_SUMO::writeJunction(), MSQueueExport::writeLane(), MSFullExport::writeLane(), MSXMLRawOut::writeLane(), NWWriter_SUMO::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), MSMeanData::writePrefix(), NWWriter_SUMO::writeProhibitions(), NWWriter_SUMO::writeRoundabout(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), SUMOVehicleParameter::writeStops(), MSFullExport::writeTLS(), NWWriter_SUMO::writeTrafficLights(), RODFDetectorCon::writeValidationDetectors(), MSXMLRawOut::writeVehicle(), MSFullExport::writeVehicles(), RORouteDef::writeXMLDefinition(), RORoute::writeXMLDefinition(), MSRouteProbe::writeXMLOutput(), MSMeanData::writeXMLOutput(), and MSDevice_Vehroutes::writeXMLRoute().
| OutputDevice & OutputDevice::openTag | ( | const SumoXMLTag & | xmlElement | ) |
Opens an XML tag.
Helper method which finds the correct string before calling openTag.
| [in] | xmlElement | Id of the element to open |
Definition at line 216 of file OutputDevice.cpp.
References getOStream(), myFormatter, and OutputFormatter::openTag().
|
inline |
Abstract output operator.
Definition at line 286 of file OutputDevice.h.
References getOStream(), and postWriteHook().
|
private |
Invalidated assignment operator.
|
protectedvirtual |
Called after every write access.
Default implementation does nothing.
Reimplemented in GUIMessageWindow::MsgOutputDevice, OutputDevice_Network, MsgRetrievingFunction< T >, OutputDevice_CERR, and OutputDevice_COUT.
Definition at line 233 of file OutputDevice.cpp.
Referenced by closeTag(), inform(), and operator<<().
|
static |
Helper method for string formatting.
| [in] | v | The floating point value to be formatted |
| [in] | precision | the precision to achieve |
Definition at line 141 of file OutputDevice.cpp.
Referenced by MSDevice_HBEFA::generateOutput(), and MSMeanData_HBEFA::MSLaneMeanDataValues::write().
| void OutputDevice::setPrecision | ( | unsigned int | precision = OUTPUT_ACCURACY | ) |
Sets the precison or resets it to default.
| [in] | precision | The accuracy (number of digits behind '.') to set |
Definition at line 196 of file OutputDevice.cpp.
References getOStream().
Referenced by MSVTypeProbe::execute(), getDevice(), MSFCDExport::write(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and RORoute::writeXMLDefinition().
| OutputDevice & OutputDevice::writeAttr | ( | std::string | attr, |
| std::string | val | ||
| ) |
writes an arbitrary attribute
| [in] | attr | The attribute (name) |
| [in] | val | The attribute value |
Definition at line 248 of file OutputDevice.cpp.
References getOStream(), myFormatter, and OutputFormatter::writeAttr().
Referenced by MSDevice_Vehroutes::generateOutput(), RONet::openOutput(), RODFRouteCont::save(), PCPolyContainer::save(), RODFDetectorCon::save(), RODFDetectorCon::saveAsPOIs(), MSFCDExport::write(), SUMOVTypeParameter::write(), ODMatrix::write(), MSInstantInductLoop::write(), SUMOVehicleParameter::write(), NBSign::writeAsPOI(), NWWriter_SUMO::writeConnection(), ODMatrix::writeDefaultAttrs(), NWWriter_SUMO::writeDistrict(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), ODMatrix::writeFlows(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeInternalNodes(), NWWriter_XML::writeJoinedJunctions(), NWWriter_SUMO::writeJunction(), NWWriter_SUMO::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWWriter_SUMO::writePermissions(), NWFrame::writePositionLong(), NWWriter_SUMO::writePreferences(), MSMeanData::writePrefix(), NWWriter_SUMO::writeProhibitions(), NWWriter_SUMO::writeRoundabout(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), SUMOVehicleParameter::writeStops(), NWWriter_SUMO::writeTrafficLights(), RODFDetectorCon::writeValidationDetectors(), RORouteDef::writeXMLDefinition(), RORoute::writeXMLDefinition(), and MSMeanData::writeXMLOutput().
|
inline |
writes a named attribute
| [in] | attr | The attribute (name) |
| [in] | val | The attribute value |
Definition at line 263 of file OutputDevice.h.
References getOStream(), myAmBinary, PlainXMLFormatter::writeAttr(), and BinaryFormatter::writeAttr().
|
inline |
Definition at line 188 of file OutputDevice.h.
References getOStream(), myAmBinary, and myFormatter.
Referenced by RONet::openOutput().
| bool OutputDevice::writeXMLHeader | ( | const std::string & | rootElement, |
| const std::string & | attrs = "", |
||
| const std::string & | comment = "" |
||
| ) |
Writes an XML header with optional configuration.
If something has been written (myXMLStack is not empty), nothing is written and false returned.
| [in] | rootElement | The root element to use |
| [in] | attrs | Additional attributes to save within the rootElement |
| [in] | comment | Additional comment (saved in front the rootElement) |
Check which parameter is used herein
Describe what is saved
Definition at line 202 of file OutputDevice.cpp.
References getOStream(), myFormatter, and OutputFormatter::writeXMLHeader().
Referenced by Command_SaveTLSState::Command_SaveTLSState(), Command_SaveTLSSwitches::Command_SaveTLSSwitches(), Command_SaveTLSSwitchStates::Command_SaveTLSSwitchStates(), createDeviceByOption(), MSCalibrator::MSCalibrator(), MSVTypeProbe::MSVTypeProbe(), RONet::openOutput(), PCPolyContainer::save(), RODFDetectorCon::save(), RODFDetectorCon::saveAsPOIs(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_XML::writeJoinedJunctions(), NWWriter_SUMO::writeNetwork(), NWWriter_XML::writeNodes(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeStreetSigns(), NWWriter_XML::writeTrafficLights(), RODFDetectorCon::writeValidationDetectors(), MSRouteProbe::writeXMLDetectorProlog(), MS_E2_ZS_CollectorOverLanes::writeXMLDetectorProlog(), MSInstantInductLoop::writeXMLDetectorProlog(), MSE2Collector::writeXMLDetectorProlog(), MSInductLoop::writeXMLDetectorProlog(), MSE3Collector::writeXMLDetectorProlog(), and MSMeanData::writeXMLDetectorProlog().
|
private |
Definition at line 313 of file OutputDevice.h.
Referenced by isBinary(), lf(), writeAttr(), and writeHeader().
|
private |
The formatter for XML.
Definition at line 311 of file OutputDevice.h.
Referenced by closeTag(), openTag(), OutputDevice(), writeAttr(), writeHeader(), writeXMLHeader(), and ~OutputDevice().
|
staticprivate |
map from names to output devices
Definition at line 306 of file OutputDevice.h.
Referenced by close(), closeAll(), and getDevice().