SUMO - Simulation of Urban MObility
|
Builds trigger objects for microsim. More...
#include <NLTriggerBuilder.h>
Public Member Functions | |
void | buildVaporizer (const SUMOSAXAttributes &attrs) |
Builds a vaporization. | |
NLTriggerBuilder () | |
Constructor. | |
void | setHandler (NLHandler *handler) |
Sets the parent handler to use for nested parsing. | |
virtual | ~NLTriggerBuilder () |
Destructor. | |
parsing methods | |
These methods parse the attributes for each of the described trigger and call the according methods to build the trigger | |
void | parseAndBuildLaneSpeedTrigger (MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base) |
Parses his values and builds a lane speed trigger. | |
void | parseAndBuildRerouter (MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base) |
Parses his values and builds a rerouter. | |
void | parseAndBuildBusStop (MSNet &net, const SUMOSAXAttributes &attrs) |
Parses his values and builds a bus stop. | |
void | parseAndBuildCalibrator (MSNet &net, const SUMOSAXAttributes &attrs, const std::string &base) |
Parses his values and builds a mesoscopic or microscopic calibrator. |
Protected Member Functions | |
building methods | |
Called with parsed values, these methods build the trigger. These methods should be overriden for the gui loader in order to build visualizable versions of the triggers. In most cases, these methods only call the constructor. | |
virtual MSLaneSpeedTrigger * | buildLaneSpeedTrigger (MSNet &net, const std::string &id, const std::vector< MSLane * > &destLanes, const std::string &file) |
Builds a lane speed trigger. | |
virtual void | buildBusStop (MSNet &net, const std::string &id, const std::vector< std::string > &lines, MSLane *lane, SUMOReal frompos, SUMOReal topos) |
Builds a bus stop. | |
virtual MSCalibrator * | buildCalibrator (MSNet &net, const std::string &id, MSEdge *edge, SUMOReal pos, const std::string &file, const std::string &outfile, const SUMOTime freq, MSRouteProbe *probe) |
builds a microscopic calibrator | |
virtual MSTriggeredRerouter * | buildRerouter (MSNet &net, const std::string &id, std::vector< MSEdge * > &edges, SUMOReal prob, const std::string &file, bool off) |
builds an rerouter | |
helper method for obtaining and checking values | |
std::string | getFileName (const SUMOSAXAttributes &attrs, const std::string &base, const bool allowEmpty=false) |
Helper method to obtain the filename. | |
MSLane * | getLane (const SUMOSAXAttributes &attrs, const std::string &tt, const std::string &tid) |
Returns the lane defined by attribute "lane". | |
SUMOReal | getPosition (const SUMOSAXAttributes &attrs, MSLane *lane, const std::string &tt, const std::string &tid) |
returns the position on the lane checking it |
Protected Attributes | |
NLHandler * | myHandler |
The parent handler to set for subhandlers. |
Builds trigger objects for microsim.
The building methods may be overridden, to build guisim-instances of the triggers, for example.
Definition at line 71 of file NLTriggerBuilder.h.
NLTriggerBuilder::NLTriggerBuilder | ( | ) |
Constructor.
Definition at line 69 of file NLTriggerBuilder.cpp.
|
virtual |
Destructor.
Definition at line 73 of file NLTriggerBuilder.cpp.
|
protectedvirtual |
Builds a bus stop.
Simply calls the MSBusStop constructor.
[in] | net | The net the bus stop belongs to |
[in] | id | The id of the bus stop |
[in] | lines | Names of the bus lines that halt on this bus stop |
[in] | lane | The lane the bus stop is placed on |
[in] | frompos | Begin position of the bus stop on the lane |
[in] | topos | End position of the bus stop on the lane |
InvalidArgument | If the bus stop can not be added to the net (is duplicate) |
Reimplemented in GUITriggerBuilder.
Definition at line 300 of file NLTriggerBuilder.cpp.
References MSNet::addBusStop().
Referenced by parseAndBuildBusStop().
|
protectedvirtual |
builds a microscopic calibrator
Simply calls the MSCalibrator constructor.
[in] | net | The net the calibrator belongs to |
[in] | id | The id of the calibrator |
[in] | edge | The edge the calibrator is placed at |
[in] | pos | The position on the edge the calibrator lies at |
[in] | file | The file to read the flows from |
Definition at line 282 of file NLTriggerBuilder.cpp.
References MSEdge::getLength().
Referenced by parseAndBuildCalibrator().
|
protectedvirtual |
Builds a lane speed trigger.
Simply calls the MSLaneSpeedTrigger constructor.
[in] | net | The net the lane speed trigger belongs to |
[in] | id | The id of the lane speed trigger |
[in] | destLanes | List of lanes affected by this speed trigger |
[in] | file | Name of the file to read the speeds to set from |
ProcessError | If the XML definition file is errornous |
Reimplemented in GUITriggerBuilder.
Definition at line 262 of file NLTriggerBuilder.cpp.
Referenced by parseAndBuildLaneSpeedTrigger().
|
protectedvirtual |
builds an rerouter
Simply calls the MSTriggeredRerouter constructor.
[in] | net | The net the rerouter belongs to |
[in] | id | The id of the rerouter |
[in] | edges | The edges the rerouter is placed at |
[in] | prob | The probability the rerouter reoutes vehicles with |
[in] | file | The file to read the reroute definitions from |
Reimplemented in GUITriggerBuilder.
Definition at line 292 of file NLTriggerBuilder.cpp.
Referenced by parseAndBuildRerouter().
void NLTriggerBuilder::buildVaporizer | ( | const SUMOSAXAttributes & | attrs | ) |
Builds a vaporization.
Parses the attributes, reporting errors if the time values are false or the edge is not known. Instatiates events for enabling and disabling the vaporization otherwise.
[in] | attrs | SAX-attributes which define the vaporizer |
Definition at line 82 of file NLTriggerBuilder.cpp.
References MSEventControl::ADAPT_AFTER_EXECUTION, MSEventControl::addEvent(), MSEdge::decVaporization(), MSEdge::dictionary(), SUMOSAXAttributes::get(), MSNet::getBeginOfTimestepEvents(), MSNet::getInstance(), OptionsCont::getOptions(), SUMOSAXAttributes::getSUMOTimeReporting(), MSEdge::incVaporization(), string2time(), SUMO_ATTR_BEGIN, SUMO_ATTR_END, SUMO_ATTR_ID, and WRITE_ERROR.
Referenced by NLHandler::myStartElement().
|
protected |
Helper method to obtain the filename.
Retrieves "file" from attributes, checks whether it is absolute and extends it by the given base path if not. Returns this information.
[in] | attrs | The attributes to obtain the file name from |
[in] | base | The base path (the path the loaded additional file lies in) |
Definition at line 314 of file NLTriggerBuilder.cpp.
References FileHelpers::getConfigurationRelative(), SUMOSAXAttributes::getOpt(), FileHelpers::isAbsolute(), and SUMO_ATTR_FILE.
Referenced by parseAndBuildCalibrator(), parseAndBuildLaneSpeedTrigger(), and parseAndBuildRerouter().
|
protected |
Returns the lane defined by attribute "lane".
Retrieves the lane id from the given attrs. Tries to retrieve the lane, throws an InvalidArgument if it does not exist.
[in] | attrs | The attributes to obtain the lane id from |
[in] | tt | The trigger type (for user output) |
[in] | tid | The trigger id (for user output) |
InvalidArgument | If the named lane does not exist or a lane is not named |
Definition at line 335 of file NLTriggerBuilder.cpp.
References MSLane::dictionary(), SUMOSAXAttributes::get(), and SUMO_ATTR_LANE.
Referenced by parseAndBuildBusStop(), and parseAndBuildCalibrator().
|
protected |
returns the position on the lane checking it
This method extracts the position, checks whether it shall be mirrored and checks whether it is within the lane. If not, an error is reported and a InvalidArgument is thrown.
[in] | attrs | The attributes to obtain the position from |
[in] | lane | The lane the position shall be valid for |
[in] | tt | The trigger type (for user output) |
[in] | tid | The trigger id (for user output) |
InvalidArgument | If the position is beyond the lane |
Definition at line 349 of file NLTriggerBuilder.cpp.
References SUMOSAXAttributes::get(), Named::getID(), MSLane::getLength(), SUMOSAXAttributes::getOpt(), SUMO_ATTR_FRIENDLY_POS, SUMO_ATTR_POSITION, and SUMOReal.
Referenced by parseAndBuildCalibrator().
void NLTriggerBuilder::parseAndBuildBusStop | ( | MSNet & | net, |
const SUMOSAXAttributes & | attrs | ||
) |
Parses his values and builds a bus stop.
[in] | net | The network the bus stop belongs to |
[in] | attrs | SAX-attributes which define the trigger |
InvalidArgument | If a parameter (lane/position) is not valid |
Definition at line 158 of file NLTriggerBuilder.cpp.
References buildBusStop(), SUMORouteHandler::checkStopPos(), SUMOSAXAttributes::get(), getLane(), MSLane::getLength(), SUMOSAXAttributes::getOpt(), myHandler, SUMOSAXAttributes::parseStringVector(), POSITION_EPS, SUMO_ATTR_ENDPOS, SUMO_ATTR_FRIENDLY_POS, SUMO_ATTR_ID, SUMO_ATTR_LINES, SUMO_ATTR_STARTPOS, and SUMOReal.
Referenced by NLHandler::myStartElement().
void NLTriggerBuilder::parseAndBuildCalibrator | ( | MSNet & | net, |
const SUMOSAXAttributes & | attrs, | ||
const std::string & | base | ||
) |
Parses his values and builds a mesoscopic or microscopic calibrator.
[in] | net | The network the calibrator belongs to |
[in] | attrs | SAX-attributes which define the trigger |
[in] | base | The base path |
InvalidArgument | If a parameter (edge/position) is not valid |
Definition at line 183 of file NLTriggerBuilder.cpp.
References buildCalibrator(), DELTA_T, SUMOSAXAttributes::get(), NamedObjectCont< T >::get(), MSNet::getDetectorControl(), MSLane::getEdge(), getFileName(), getLane(), SUMOSAXAttributes::getOpt(), SUMOSAXAttributes::getOptSUMOTimeReporting(), getPosition(), MSDetectorControl::getTypedDetectors(), MSGlobals::gUseMesoSim, myHandler, GenericSAXHandler::registerParent(), SUMO_ATTR_FREQUENCY, SUMO_ATTR_ID, SUMO_ATTR_OUTPUT, SUMO_ATTR_ROUTEPROBE, SUMO_TAG_CALIBRATOR, SUMO_TAG_ROUTEPROBE, and SUMOReal.
Referenced by NLHandler::myStartElement().
void NLTriggerBuilder::parseAndBuildLaneSpeedTrigger | ( | MSNet & | net, |
const SUMOSAXAttributes & | attrs, | ||
const std::string & | base | ||
) |
Parses his values and builds a lane speed trigger.
If one of the declaration values is errornous, an InvalidArgument is thrown.
If the XML-file parsed during initialisation is errornous, and the MSLaneSpeedTrigger-constructor throws a ProcessError due to this, this exception is catched and an InvalidArgument with the message given in the ProcessError is thrown.
[in] | net | The network the lane speed trigger belongs to |
[in] | attrs | SAX-attributes which define the trigger |
[in] | base | The base path |
InvalidArgument | If a parameter (lane/position) is not valid or the read definition is errornous |
Definition at line 118 of file NLTriggerBuilder.cpp.
References buildLaneSpeedTrigger(), MSLane::dictionary(), SUMOSAXAttributes::get(), getFileName(), myHandler, SUMOSAXAttributes::parseStringVector(), GenericSAXHandler::registerParent(), SUMO_ATTR_ID, SUMO_ATTR_LANES, and SUMO_TAG_VSS.
Referenced by NLHandler::myStartElement().
void NLTriggerBuilder::parseAndBuildRerouter | ( | MSNet & | net, |
const SUMOSAXAttributes & | attrs, | ||
const std::string & | base | ||
) |
Parses his values and builds a rerouter.
[in] | net | The network the rerouter belongs to |
[in] | attrs | SAX-attributes which define the trigger |
[in] | base | The base path |
InvalidArgument | If a parameter (edge) is not valid |
Definition at line 219 of file NLTriggerBuilder.cpp.
References buildRerouter(), MSEdge::dictionary(), SUMOSAXAttributes::get(), getFileName(), SUMOSAXAttributes::getOpt(), myHandler, SUMOSAXAttributes::parseStringVector(), GenericSAXHandler::registerParent(), SUMO_ATTR_EDGES, SUMO_ATTR_ID, SUMO_ATTR_OFF, SUMO_ATTR_PROB, SUMO_TAG_REROUTER, and SUMOReal.
Referenced by NLHandler::myStartElement().
void NLTriggerBuilder::setHandler | ( | NLHandler * | handler | ) |
Sets the parent handler to use for nested parsing.
[in] | handler | The netload handler to set |
Definition at line 76 of file NLTriggerBuilder.cpp.
References myHandler.
Referenced by load(), and GUILoadThread::run().
|
protected |
The parent handler to set for subhandlers.
Definition at line 305 of file NLTriggerBuilder.h.
Referenced by parseAndBuildBusStop(), parseAndBuildCalibrator(), parseAndBuildLaneSpeedTrigger(), parseAndBuildRerouter(), and setHandler().