Eclipse SUMO - Simulation of Urban MObility
ROVehicle.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3// Copyright (C) 2002-2022 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
109 inline double getChosenSpeedFactor() const {
110 return getType()->speedFactor.getMax();
111 }
112
116 inline const SUMOVTypeParameter& getVehicleType() const {
117 return *getType();
118 }
119
121 inline double getLength() const {
122 return getType()->length;
123 }
124
125
136 void saveAsXML(OutputDevice& os, OutputDevice* const typeos, bool asAlternatives, OptionsCont& options) const;
137
138
139private:
145 void addStop(const SUMOVehicleParameter::Stop& stopPar,
146 const RONet* net, MsgHandler* errorHandler);
147
148private:
151
154
156 static std::map<ConstROEdgeVector, std::string> mySavedRoutes;
157
158private:
160 ROVehicle(const ROVehicle& src);
161
164
165};
long long int SUMOTime
Definition: GUI.h:36
std::vector< const ROEdge * > ConstROEdgeVector
Definition: ROEdge.h:54
T MAX2(T a, T b)
Definition: StdDefs.h:77
double getMax() const
Returns the maximum value of this distribution.
A storage for options typed value containers)
Definition: OptionsCont.h:89
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61
A basic edge for routing applications.
Definition: ROEdge.h:70
The router's network representation.
Definition: RONet.h:62
A routable thing such as a vehicle or person.
Definition: RORoutable.h:52
const SUMOVTypeParameter * getType() const
Returns the type of the routable.
Definition: RORoutable.h:82
const SUMOVehicleParameter & getParameter() const
Returns the definition of the vehicle / person parameter.
Definition: RORoutable.h:71
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.
double getChosenSpeedFactor() const
Returns an upper bound for the speed factor of this vehicle.
Definition: ROVehicle.h:109
static std::map< ConstROEdgeVector, std::string > mySavedRoutes
map of all routes that were already saved with a name
Definition: ROVehicle.h:156
const ROEdge * getDepartEdge() const
Returns the first edge the vehicle takes.
Definition: ROVehicle.cpp:122
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
Definition: ROVehicle.cpp:170
ROVehicle(const ROVehicle &src)
Invalidated copy constructor.
void saveAsXML(OutputDevice &os, OutputDevice *const typeos, bool asAlternatives, OptionsCont &options) const
Saves the complete vehicle description.
Definition: ROVehicle.cpp:200
double getLength() const
Returns the vehicle's length.
Definition: ROVehicle.h:121
RORouteDef * getRouteDefinition() const
Returns the definition of the route the vehicle takes.
Definition: ROVehicle.h:73
ConstROEdgeVector myStopEdges
The edges where the vehicle stops.
Definition: ROVehicle.h:153
ROVehicle(const SUMOVehicleParameter &pars, RORouteDef *route, const SUMOVTypeParameter *type, const RONet *net, MsgHandler *errorHandler=0)
Constructor.
Definition: ROVehicle.cpp:49
const ConstROEdgeVector & getStopEdges() const
Definition: ROVehicle.h:97
virtual ~ROVehicle()
Destructor.
Definition: ROVehicle.cpp:118
void addStop(const SUMOVehicleParameter::Stop &stopPar, const RONet *net, MsgHandler *errorHandler)
Adds a stop to this vehicle.
Definition: ROVehicle.cpp:75
void computeRoute(const RORouterProvider &provider, const bool removeLoops, MsgHandler *errorHandler)
Definition: ROVehicle.cpp:128
const SUMOVTypeParameter & getVehicleType() const
Returns the vehicle's type definition.
Definition: ROVehicle.h:116
RORouteDef *const myRoute
The route the vehicle takes.
Definition: ROVehicle.h:150
Structure representing possible vehicle parameter.
double length
The physical vehicle length.
Distribution_Parameterized speedFactor
The factor by which the maximum speed may deviate from the allowed max speed on the street.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.