Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
ROVehicle.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2002-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
20// A vehicle as used by router
21/****************************************************************************/
22#pragma once
23#include <config.h>
24
25#include <string>
26#include <iostream>
31#include "RORoutable.h"
32
33
34// ===========================================================================
35// class declarations
36// ===========================================================================
37class OutputDevice;
38class ROEdge;
39class RONet;
40class RORouteDef;
41
42
43// ===========================================================================
44// class definitions
45// ===========================================================================
50class ROVehicle : public RORoutable {
51public:
59 RORouteDef* route, const SUMOVTypeParameter* type,
60 const RONet* net, MsgHandler* errorHandler = 0);
61
62
64 virtual ~ROVehicle();
65
66
74 return myRoute;
75 }
76
77
82 const ROEdge* getDepartEdge() const;
83
84
85 void computeRoute(const RORouterProvider& provider,
86 const bool removeLoops, MsgHandler* errorHandler);
87
92 inline SUMOTime getDepartureTime() const {
93 return MAX2(SUMOTime(0), getParameter().depart);
94 }
95
96
97 inline const ConstROEdgeVector& getStopEdges() const {
98 return myStopEdges;
99 }
100
101
103 ConstROEdgeVector getMandatoryEdges(const ROEdge* requiredStart, const ROEdge* requiredEnd) const;
104
108 inline const SUMOVTypeParameter& getVTypeParameter() const {
109 return *getType();
110 }
111
113 inline double getLength() const {
114 return getType()->length;
115 }
116
117 inline bool hasJumps() const {
118 return myJumpTime >= 0;
119 }
120
121 inline SUMOTime getJumpTime() const {
122 return myJumpTime;
123 }
124
126 void collectJumps(const ConstROEdgeVector& mandatory, std::set<ConstROEdgeVector::const_iterator>& jumpStarts) const;
127
138 void saveAsXML(OutputDevice& os, OutputDevice* const typeos, bool asAlternatives, OptionsCont& options, int cloneIndex = 0) const;
139
140
141private:
147 void addStop(const SUMOVehicleParameter::Stop& stopPar,
148 const RONet* net, MsgHandler* errorHandler);
149
150private:
153
156
159
161 static std::map<ConstROEdgeVector, std::string> mySavedRoutes;
162
163private:
165 ROVehicle(const ROVehicle& src);
166
169
170};
long long int SUMOTime
Definition GUI.h:36
std::vector< const ROEdge * > ConstROEdgeVector
Definition ROEdge.h:57
T MAX2(T a, T b)
Definition StdDefs.h:86
A storage for options typed value containers)
Definition OptionsCont.h:89
Static storage of an output device and its base (abstract) implementation.
A basic edge for routing applications.
Definition ROEdge.h:73
The router's network representation.
Definition RONet.h:63
A routable thing such as a vehicle or person.
Definition RORoutable.h:53
const SUMOVTypeParameter * getType() const
Returns the type of the routable.
Definition RORoutable.h:86
const SUMOVehicleParameter & getParameter() const
Returns the definition of the vehicle / person parameter.
Definition RORoutable.h:75
Base class for a vehicle's route definition.
Definition RORouteDef.h:53
A vehicle as used by router.
Definition ROVehicle.h:50
ROVehicle & operator=(const ROVehicle &src)
Invalidated assignment operator.
void collectJumps(const ConstROEdgeVector &mandatory, std::set< ConstROEdgeVector::const_iterator > &jumpStarts) const
collect mandatory-edge iterators that define jumps in the route
static std::map< ConstROEdgeVector, std::string > mySavedRoutes
map of all routes that were already saved with a name
Definition ROVehicle.h:161
SUMOTime getJumpTime() const
Definition ROVehicle.h:121
const ROEdge * getDepartEdge() const
Returns the first edge the vehicle takes.
SUMOTime getDepartureTime() const
Returns the time the vehicle starts at, 0 for triggered vehicles.
Definition ROVehicle.h:92
ConstROEdgeVector getMandatoryEdges(const ROEdge *requiredStart, const ROEdge *requiredEnd) const
compute mandatory edges
ROVehicle(const ROVehicle &src)
Invalidated copy constructor.
double getLength() const
Returns the vehicle's length.
Definition ROVehicle.h:113
RORouteDef * getRouteDefinition() const
Returns the definition of the route the vehicle takes.
Definition ROVehicle.h:73
void saveAsXML(OutputDevice &os, OutputDevice *const typeos, bool asAlternatives, OptionsCont &options, int cloneIndex=0) const
Saves the complete vehicle description.
ConstROEdgeVector myStopEdges
The edges where the vehicle stops.
Definition ROVehicle.h:155
const ConstROEdgeVector & getStopEdges() const
Definition ROVehicle.h:97
virtual ~ROVehicle()
Destructor.
bool hasJumps() const
Definition ROVehicle.h:117
SUMOTime myJumpTime
Whether this vehicle has any jumps defined.
Definition ROVehicle.h:158
void addStop(const SUMOVehicleParameter::Stop &stopPar, const RONet *net, MsgHandler *errorHandler)
Adds a stop to this vehicle.
Definition ROVehicle.cpp:77
void computeRoute(const RORouterProvider &provider, const bool removeLoops, MsgHandler *errorHandler)
const SUMOVTypeParameter & getVTypeParameter() const
Returns the vehicle's type definition.
Definition ROVehicle.h:108
RORouteDef *const myRoute
The route the vehicle takes.
Definition ROVehicle.h:152
Structure representing possible vehicle parameter.
double length
The physical vehicle length.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.