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-2026 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
98 struct Mandatory {
99 Mandatory(const ROEdge* e, double p, SUMOTime jump = -1):
100 edge(e),
101 pos(p),
102 isJump(jump >= 0) {}
103
104 const ROEdge* edge;
105 double pos;
106 bool isJump;
107 };
108
109 std::vector<Mandatory> getMandatoryEdges(const ROEdge* requiredStart, const ROEdge* requiredEnd) const;
110
114 inline const SUMOVTypeParameter& getVTypeParameter() const {
115 return *getType();
116 }
117
119 inline double getLength() const {
120 return getType()->length;
121 }
122
123 inline bool hasJumps() const {
124 return myJumpTime >= 0;
125 }
126
127 inline SUMOTime getJumpTime() const {
128 return myJumpTime;
129 }
130
141 void saveAsXML(OutputDevice& os, OutputDevice* const typeos, bool asAlternatives, OptionsCont& options, int cloneIndex = 0) const;
142
143
144private:
150 void addStop(const SUMOVehicleParameter::Stop& stopPar,
151 const RONet* net, MsgHandler* errorHandler);
152
153private:
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
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.
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:127
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
ROVehicle(const ROVehicle &src)
Invalidated copy constructor.
double getLength() const
Returns the vehicle's length.
Definition ROVehicle.h:119
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.
virtual ~ROVehicle()
Destructor.
bool hasJumps() const
Definition ROVehicle.h:123
SUMOTime myJumpTime
Whether this vehicle has any jumps defined.
Definition ROVehicle.h:158
std::vector< Mandatory > getMandatoryEdges(const ROEdge *requiredStart, const ROEdge *requiredEnd) const
void addStop(const SUMOVehicleParameter::Stop &stopPar, const RONet *net, MsgHandler *errorHandler)
Adds a stop to this vehicle.
Definition ROVehicle.cpp:70
void computeRoute(const RORouterProvider &provider, const bool removeLoops, MsgHandler *errorHandler)
const SUMOVTypeParameter & getVTypeParameter() const
Returns the vehicle's type definition.
Definition ROVehicle.h:114
RORouteDef *const myRoute
The route the vehicle takes.
Definition ROVehicle.h:155
Structure representing possible vehicle parameter.
double length
The physical vehicle length.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.
information for mandatory edges
Definition ROVehicle.h:98
const ROEdge * edge
Definition ROVehicle.h:104
Mandatory(const ROEdge *e, double p, SUMOTime jump=-1)
Definition ROVehicle.h:99