Eclipse SUMO - Simulation of Urban MObility
|
Utility methods for initialising, closing and using the XML-subsystem. More...
#include <XMLSubSys.h>
Static Public Member Functions | |
static void | close () |
Closes the xml-subsystem. | |
static SUMOSAXReader * | getSAXReader (SUMOSAXHandler &handler, const bool isNet=false, const bool isRoute=false) |
Builds a reader and assigns the handler to it. | |
static void | init () |
Initialises the xml-subsystem. | |
static bool | runParser (GenericSAXHandler &handler, const std::string &file, const bool isNet=false, const bool isRoute=false, const bool isExternal=false, const bool catchExceptions=true) |
Runs the given handler on the given file; returns if everything's ok. | |
static void | setHandler (GenericSAXHandler &handler) |
Sets the given handler for the default reader. | |
static void | setValidation (const std::string &validationScheme, const std::string &netValidationScheme, const std::string &routeValidationScheme) |
Enables or disables validation. | |
Static Private Member Functions | |
static std::string | warnLocalScheme (const std::string &newScheme, const bool haveSUMO_HOME) |
Static Private Attributes | |
static XERCES_CPP_NAMESPACE::XMLGrammarPool * | myGrammarPool = nullptr |
Schema cache to be used for grammars which are not declared. | |
static bool | myNeedsValidationWarning = true |
Whether a warning about missing SUMO_HOME should be emitted. | |
static std::string | myNetValidationScheme = "local" |
Information whether built reader/parser shall validate SUMO networks against schemata. | |
static int | myNextFreeReader |
Information whether the reader is parsing. | |
static std::vector< SUMOSAXReader * > | myReaders |
The XML Readers used for repeated parsing. | |
static std::string | myRouteValidationScheme = "local" |
Information whether built reader/parser shall validate SUMO routes against schemata. | |
static std::string | myValidationScheme = "local" |
Information whether built reader/parser shall validate XML-documents against schemata. | |
Utility methods for initialising, closing and using the XML-subsystem.
The Xerces-parsers need an initialisation and should also be closed.
As we use xerces for both the input files and the configuration we would have to check whether the system was initialised before. Instead, we call XMLSubSys::init(bool) once at the beginning of our application and XMLSubSys::close() at the end.
Closing and initialising the XML subsystem is necessary. Still, we never encountered any problems with it. Once, after some modifications, SUMO crashed when closing the XML sub system. The reason was a memory leak within the microsim-module. On initialisation, a SAX2XMLReader is built which can be used during later process. It is destroyed when the subsystem is closed.
In addition to initialisation and shutdown, this module allows to build SAXReaders and/or running a given handler on a given file without dealing with the reader at all.
Definition at line 62 of file XMLSubSys.h.
|
static |
Closes the xml-subsystem.
Deletes the built reader and calls XMLPlatformUtils::Terminate();
Definition at line 119 of file XMLSubSys.cpp.
References myGrammarPool, myReaders, and StringUtils::resetTranscoder().
Referenced by SystemFrame::close().
|
static |
Builds a reader and assigns the handler to it.
Tries to build a SAX2XMLReader using "getSAXReader()". If this fails, 0 is returned. Otherwise, the given handler is assigned to the reader as the current DefaultHandler and ErrorHandler.
[in] | handler | The handler to assign to the built reader |
[in] | isNet | whether a network gets loaded |
[in] | isRoute | whether routes get loaded |
Definition at line 132 of file XMLSubSys.cpp.
References myGrammarPool, myNetValidationScheme, myRouteValidationScheme, and myValidationScheme.
Referenced by MSStateHandler::MSStateTimeHandler::getTime(), GUISettingsHandler::GUISettingsHandler(), MSDevice_FCDReplay::init(), NIImporter_OpenStreetMap::load(), PCNetProjectionLoader::load(), NITypeLoader::load(), main(), and SUMORouteLoader::SUMORouteLoader().
|
static |
Initialises the xml-subsystem.
Calls XMLPlatformUtils::Initialize(). If this fails, the exception is caught and its content is reported using a ProcessError.
ProcessError | If the initialisation fails |
Definition at line 56 of file XMLSubSys.cpp.
References myNextFreeReader, and StringUtils::transcode().
Referenced by LIBSUMO_NAMESPACE::Simulation::load(), main(), and main().
|
static |
Runs the given handler on the given file; returns if everything's ok.
Uses the reader built on init() which is stored in myReader to parse the given file.
All exceptions are catched and reported to the error-instance of the MsgHandler. Also, if the reader could not be built, this is reported.
The method returns true if everything went ok. This means, that the reader could be built, no exception was caught, and nothing was reported to the error-instance of the MsgHandler.
[in] | handler | The handler to assign to the built reader |
[in] | file | The file to run the parser at |
[in] | isNet | whether a network gets loaded |
[in] | isRoute | whether routes get loaded |
[in] | isExternal | whether it is an external file like matsim or opendrive |
[in] | catchExceptions | whether exceptions on parsing should be caught or transferred into a ProcessError |
Definition at line 148 of file XMLSubSys.cpp.
References MsgHandler::clear(), MsgHandler::getErrorInstance(), GenericSAXHandler::getFileName(), myGrammarPool, myNetValidationScheme, myNextFreeReader, myReaders, myRouteValidationScheme, myValidationScheme, GenericSAXHandler::setFileName(), TL, TLF, StringUtils::transcode(), MsgHandler::wasInformed(), WRITE_ERROR, and WRITE_MESSAGEF.
Referenced by NIImporter_SUMO::_loadNetwork(), NLBuilder::build(), GUISettingsHandler::GUISettingsHandler(), AGActivityGen::importInfoCity(), NIImporter_Vissim::load(), NLBuilder::load(), NITypeLoader::load(), ODDistrictCont::loadDistricts(), GUINet::loadEdgeData(), ShapeHandler::loadFiles(), PCLoaderOSM::loadIfSet(), PCLoaderXML::loadIfSet(), loadJTRDefinitions(), ODMatrix::loadMatrix(), loadNet(), ROLoader::loadNet(), NIImporter_ITSUMO::loadNetwork(), NIImporter_MATSim::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), RealisticEngineModel::loadParameters(), ODMatrix::loadRoutes(), MSNet::loadState(), ROLoader::loadWeights(), main(), MSCalibrator::MSCalibrator(), MSLaneSpeedTrigger::MSLaneSpeedTrigger(), NIImporter_OpenDrive::myStartElement(), GNEMultipleParametersDialog::ParametersOperations::onCmdLoadParameters(), GNESingleParametersDialog::ParametersOperations::onCmdLoadParameters(), GNEVTypeDistributionsDialog::ParametersOperations::onCmdLoadParameters(), GNETLSEditorFrame::TLSFile::onCmdLoadTLSProgram(), GUIApplicationWindow::onCmdOpenShapes(), ROLoader::openTypedRoutes(), DataHandler::parse(), GeneralHandler::parse(), GNETLSEditorFrame::parseTLSPrograms(), MSNet::quickReload(), readDetectors(), single(), and GenericSAXHandler::startElement().
|
static |
Sets the given handler for the default reader.
Uses the reader built on init() which is stored in myReader.
[in] | handler | The handler to assign to the built reader |
Definition at line 142 of file XMLSubSys.cpp.
References myNextFreeReader, and myReaders.
Referenced by GenericSAXHandler::endElement(), and GenericSAXHandler::registerParent().
|
static |
Enables or disables validation.
The setting is only valid for parsers created after the call. Existing parsers are not adapted.
[in] | validationScheme | Whether validation of XML-documents against schemata shall be enabled |
[in] | netValidationScheme | Whether validation of SUMO networks against schemata shall be enabled |
Definition at line 83 of file XMLSubSys.cpp.
References FileHelpers::isReadable(), myGrammarPool, myNeedsValidationWarning, myNetValidationScheme, myRouteValidationScheme, myValidationScheme, TL, warnLocalScheme(), WRITE_WARNING, and WRITE_WARNINGF.
Referenced by NLBuilder::init(), GNEApplicationWindow::loadAdditionalElements(), GNEApplicationWindow::loadDataElements(), GNEApplicationWindow::loadDemandElements(), GNEApplicationWindow::loadMeanDataElements(), GNENetDiffTool::loadShapes(), main(), main(), GNEApplicationWindow::onCmdOpenAdditionals(), GNEApplicationWindow::onCmdOpenDataElements(), GNEApplicationWindow::onCmdOpenDemandElements(), GNEApplicationWindow::onCmdOpenMeanDatas(), GNEApplicationWindow::onCmdReloadAdditionals(), GNEApplicationWindow::onCmdReloadDataElements(), GNEApplicationWindow::onCmdReloadDemandElements(), GNEApplicationWindow::onCmdReloadMeanDatas(), GUILoadThread::run(), and GNELoadThread::run().
|
staticprivate |
Definition at line 67 of file XMLSubSys.cpp.
References myNeedsValidationWarning, TL, and WRITE_WARNING.
Referenced by setValidation().
|
staticprivate |
Schema cache to be used for grammars which are not declared.
Definition at line 167 of file XMLSubSys.h.
Referenced by close(), getSAXReader(), runParser(), and setValidation().
|
staticprivate |
Whether a warning about missing SUMO_HOME should be emitted.
Definition at line 170 of file XMLSubSys.h.
Referenced by setValidation(), and warnLocalScheme().
|
staticprivate |
Information whether built reader/parser shall validate SUMO networks against schemata.
Definition at line 161 of file XMLSubSys.h.
Referenced by getSAXReader(), runParser(), and setValidation().
|
staticprivate |
Information whether the reader is parsing.
Definition at line 155 of file XMLSubSys.h.
Referenced by init(), runParser(), and setHandler().
|
staticprivate |
The XML Readers used for repeated parsing.
Definition at line 152 of file XMLSubSys.h.
Referenced by close(), runParser(), and setHandler().
|
staticprivate |
Information whether built reader/parser shall validate SUMO routes against schemata.
Definition at line 164 of file XMLSubSys.h.
Referenced by getSAXReader(), runParser(), and setValidation().
|
staticprivate |
Information whether built reader/parser shall validate XML-documents against schemata.
Definition at line 158 of file XMLSubSys.h.
Referenced by getSAXReader(), runParser(), and setValidation().