61 for (std::vector<SUMOVehicleParameter::Stop>::const_iterator s = pars.
stops.begin(); s != pars.
stops.end(); ++s) {
64 if (pars.
via.size() != 0) {
68 for (std::vector<std::string>::const_iterator it = pars.
via.begin(); it != pars.
via.end(); ++it) {
79 assert(stopEdge != 0);
81 if (errorHandler != 0) {
82 errorHandler->
inform(
"Stop edge '" + stopEdge->
getID() +
"' does not allow vehicle '" +
getID() +
"'.");
87 std::vector<SUMOVehicleParameter::Stop>::iterator iter =
getParameter().
stops.begin();
88 ConstROEdgeVector::iterator edgeIter =
myStopEdges.begin();
97 ConstROEdgeVector::const_iterator stopEdgeIt = std::find(edges.begin(), edges.end(), stopEdge);
98 if (stopEdgeIt == edges.end()) {
103 if (edgeIter > stopEdgeIt || (edgeIter == stopEdgeIt && iter->endPos >= stopPar.
endPos)) {
111 iter += stopPar.
index;
112 edgeIter += stopPar.
index;
131 const bool removeLoops,
MsgHandler* errorHandler) {
133 std::string noRouteMsg =
"The vehicle '" +
getID() +
"' has no valid route.";
137 errorHandler->
inform(noRouteMsg);
142 if (current == 0 || current->
size() == 0) {
144 errorHandler->
inform(noRouteMsg);
152 if (current->
size() == 0) {
154 errorHandler->
inform(noRouteMsg +
" (after removing loops)");
OutputDevice & writeXMLDefinition(OutputDevice &dev, const ROVehicle *const veh, bool asAlternatives, bool withExitTimes) const
Saves the built route / route alternatives.
ROEdge * getEdgeForLaneID(const std::string &laneID) const
Retrieves an edge from the network when the lane id is given.
Structure representing possible vehicle parameter.
const SUMOVehicleParameter & getParameter() const
Returns the definition of the vehicle / person parameter.
bool saved
Information whether this type was already saved (needed by routers)
void addAlternative(SUMOAbstractRouter< ROEdge, ROVehicle > &router, const ROVehicle *const, RORoute *current, SUMOTime begin)
Adds an alternative to the list of routes.
const RORoute * getFirstRoute() const
bool prohibits(const ROVehicle *const vehicle) const
Returns whether this edge prohibits the given vehicle to pass it.
void recheckForLoops()
Checks whether this route contains loops and removes such.
const ROEdge * getFirst() const
Returns the first edge in the route.
std::vector< const ROEdge * > ConstROEdgeVector
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
bool myRoutingSuccess
Whether the last routing was successful.
const std::string & getID() const
Returns the id.
ROVehicle(const SUMOVehicleParameter &pars, RORouteDef *route, const SUMOVTypeParameter *type, const RONet *net, MsgHandler *errorHandler=0)
Constructor.
RORouteDef *const myRoute
The route the vehicle takes.
std::vector< Stop > stops
List of the stops the vehicle will make, TraCI may add entries here.
void writeParams(OutputDevice &out) const
RORoute * buildCurrentRoute(SUMOAbstractRouter< ROEdge, ROVehicle > &router, SUMOTime begin, const ROVehicle &veh) const
Triggers building of the complete route (via preComputeCurrentRoute) or returns precomputed route...
void addStop(const SUMOVehicleParameter::Stop &stopPar, const RONet *net, MsgHandler *errorHandler)
Adds a stop to this vehicle.
A routable thing such as a vehicle or person.
const ROEdge * getDepartEdge() const
Returns the first edge the vehicle takes.
const std::vector< SUMOVehicleParameter::Stop > & getStops() const
Returns the list of stops this route contains.
void write(OutputDevice &dev, const OptionsCont &oc, const SumoXMLTag tag=SUMO_TAG_VEHICLE, const std::string &typeID="") const
Writes the parameters as a beginning element.
double endPos
The stopping position end.
const std::string & getID() const
Returns the id of the routable.
SUMOTime getDepartureTime() const
Returns the time the vehicle starts at, 0 for triggered vehicles.
A basic edge for routing applications.
RORouteDef * getRouteDefinition() const
Returns the definition of the route the vehicle takes.
std::string lane
The lane to stop at.
std::vector< std::string > via
List of the via-edges the vehicle must visit.
SUMOAbstractRouter< E, V > & getVehicleRouter() const
int size() const
Returns the number of edges in this route.
void write(OutputDevice &dev) const
Writes the vtype.
The router's network representation.
Structure representing possible vehicle parameter.
const SUMOVTypeParameter * getType() const
Returns the type of the routable.
ConstROEdgeVector myStopEdges
The edges where the vehicle stops.
Definition of vehicle stop (position and duration)
const ConstROEdgeVector & getEdgeVector() const
Returns the list of edges this route consists of.
void inform(std::string msg, bool addType=true)
adds a new error to the list
A storage for options typed value containers)
int index
at which position in the stops list
void computeRoute(const RORouterProvider &provider, const bool removeLoops, MsgHandler *errorHandler)
Base class for a vehicle's route definition.
Static storage of an output device and its base (abstract) implementation.
bool closeTag()
Closes the most recently opened tag.
ROEdge * getEdge(const std::string &name) const
Retrieves an edge from the network.
virtual ~ROVehicle()
Destructor.
void saveAsXML(OutputDevice &os, OutputDevice *const typeos, bool asAlternatives, OptionsCont &options) const
Saves the complete vehicle description.
A complete router's route.