Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
RORoutable.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/****************************************************************************/
18// A routable thing such as a vehicle or person
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <string>
24#include <iostream>
31
32// ===========================================================================
33// class declarations
34// ===========================================================================
35class OutputDevice;
36class ROEdge;
37class ROLane;
38class RONode;
39class ROVehicle;
40
41typedef std::vector<const ROEdge*> ConstROEdgeVector;
44
45
46// ===========================================================================
47// class definitions
48// ===========================================================================
54public:
61 myParameter(pars),
62 myType(type),
63 myRandomSeed(RandHelper::murmur3_32(pars.id, RandHelper::getSeed())),
64 myRoutingSuccess(false) {}
65
66
68 virtual ~RORoutable() {}
69
70
75 inline const SUMOVehicleParameter& getParameter() const {
76 return myParameter;
77 }
78
79
86 inline const SUMOVTypeParameter* getType() const {
87 return myType;
88 }
89
90
95 inline const std::string& getID() const {
96 return myParameter.id;
97 }
98
100 long long int getRandomSeed() const {
101 return myRandomSeed;
102 }
103
108 inline SUMOTime getDepart() const {
109 return myParameter.depart;
110 }
111
113 inline void setDepart(SUMOTime t) {
115 }
116
118 return getType() != 0 ? getType()->vehicleClass : SVC_IGNORING;
119 }
120
125 return false;
126 };
127
129 inline double getMaxSpeed() const {
130 return MIN2(getType()->maxSpeed,
131 getType()->desiredMaxSpeed * getType()->speedFactor.getParameter(0));
132 }
133
134 virtual const ROEdge* getDepartEdge() const = 0;
135
136
137 inline bool isPublicTransport() const {
138 return myParameter.line != "";
139 }
140
141 inline bool isPartOfFlow() const {
142 return myParameter.repetitionNumber >= 0;
143 }
144
145 virtual void computeRoute(const RORouterProvider& provider,
146 const bool removeLoops, MsgHandler* errorHandler) = 0;
147
148
156 void write(OutputDevice* os, OutputDevice* const altos,
157 OutputDevice* const typeos, OptionsCont& options, int quota) const {
158 for (int i = 0; i < quota; i++) {
159 if (os != nullptr) {
160 if (altos == nullptr && typeos == nullptr) {
161 saveAsXML(*os, os, false, options, i);
162 } else {
163 saveAsXML(*os, typeos, false, options, i);
164 }
165 }
166 if (altos != nullptr) {
167 saveAsXML(*altos, typeos, true, options, i);
168 }
169 }
170 }
171
172
173 inline bool getRoutingSuccess() const {
174 return myRoutingSuccess;
175 }
176
177
178protected:
189 virtual void saveAsXML(OutputDevice& os, OutputDevice* const typeos, bool asAlternatives, OptionsCont& options, int cloneIndex = 0) const = 0;
190
191
192private:
195
198
200 const long long int myRandomSeed;
201
202protected:
205
206
207private:
210
213
214};
long long int SUMOTime
Definition GUI.h:36
IntermodalRouter< ROEdge, ROLane, RONode, ROVehicle > ROIntermodalRouter
Definition RORoutable.h:42
RouterProvider< ROEdge, ROLane, RONode, ROVehicle > RORouterProvider
Definition RORoutable.h:43
std::vector< const ROEdge * > ConstROEdgeVector
Definition RORoutable.h:41
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
T MIN2(T a, T b)
Definition StdDefs.h:80
A storage for options typed value containers)
Definition OptionsCont.h:89
Static storage of an output device and its base (abstract) implementation.
virtual const std::string getParameter(const std::string &key, const std::string defaultValue="") const
Returns the value for a given key.
A basic edge for routing applications.
Definition ROEdge.h:73
A single lane the router may use.
Definition ROLane.h:48
Base class for nodes used by the router.
Definition RONode.h:46
A routable thing such as a vehicle or person.
Definition RORoutable.h:53
bool getRoutingSuccess() const
Definition RORoutable.h:173
SUMOVehicleParameter myParameter
The vehicle's parameter.
Definition RORoutable.h:194
bool ignoreTransientPermissions() const
Returns whether this object is ignoring transient permission changes (during routing)
Definition RORoutable.h:124
RORoutable(const RORoutable &src)
Invalidated copy constructor.
const SUMOVTypeParameter *const myType
The type of the vehicle.
Definition RORoutable.h:197
virtual const ROEdge * getDepartEdge() const =0
SUMOVehicleClass getVClass() const
Definition RORoutable.h:117
long long int getRandomSeed() const
return vehicle-specific random number
Definition RORoutable.h:100
bool isPublicTransport() const
Definition RORoutable.h:137
bool isPartOfFlow() const
Definition RORoutable.h:141
RORoutable(const SUMOVehicleParameter &pars, const SUMOVTypeParameter *type)
Constructor.
Definition RORoutable.h:60
virtual void computeRoute(const RORouterProvider &provider, const bool removeLoops, MsgHandler *errorHandler)=0
RORoutable & operator=(const RORoutable &src)
Invalidated assignment operator.
SUMOTime getDepart() const
Returns the time the vehicle starts at, -1 for triggered vehicles.
Definition RORoutable.h:108
bool myRoutingSuccess
Whether the last routing was successful.
Definition RORoutable.h:204
void write(OutputDevice *os, OutputDevice *const altos, OutputDevice *const typeos, OptionsCont &options, int quota) const
Saves the routable including the vehicle type (if it was not saved before).
Definition RORoutable.h:156
virtual void saveAsXML(OutputDevice &os, OutputDevice *const typeos, bool asAlternatives, OptionsCont &options, int cloneIndex=0) const =0
Saves the complete routable description.
const SUMOVTypeParameter * getType() const
Returns the type of the routable.
Definition RORoutable.h:86
void setDepart(SUMOTime t)
update depart time (for triggered persons)
Definition RORoutable.h:113
const std::string & getID() const
Returns the id of the routable.
Definition RORoutable.h:95
const long long int myRandomSeed
object-specific random constant
Definition RORoutable.h:200
const SUMOVehicleParameter & getParameter() const
Returns the definition of the vehicle / person parameter.
Definition RORoutable.h:75
double getMaxSpeed() const
Returns the vehicle's maximum speed.
Definition RORoutable.h:129
virtual ~RORoutable()
Destructor.
Definition RORoutable.h:68
A vehicle as used by router.
Definition ROVehicle.h:50
Utility functions for using a global, resetable random number generator.
Definition RandHelper.h:133
Structure representing possible vehicle parameter.
SUMOVehicleClass vehicleClass
The vehicle's class.
Structure representing possible vehicle parameter.
std::string id
The vehicle's id.
std::string line
The vehicle's line (mainly for public transport)