Eclipse SUMO - Simulation of Urban MObility
SUMOVehicleClass.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 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 /****************************************************************************/
22 // Definitions of SUMO vehicle classes and helper functions
23 /****************************************************************************/
24 #pragma once
25 #include <config.h>
26 #include <string>
27 #include <set>
28 #include <limits>
29 #include <utils/common/StdDefs.h>
33 
34 
35 // ===========================================================================
36 // class declarations
37 // ===========================================================================
38 class OutputDevice;
39 class SUMOSAXAttributes;
40 
41 // ===========================================================================
42 // enum definitions
43 // ===========================================================================
48 enum class SUMOVehicleShape {
50  UNKNOWN,
52  PEDESTRIAN,
54  BICYCLE,
56  MOPED,
58  MOTORCYCLE,
60  PASSENGER,
70  //PASSENGER_AUTOMATED,
72  TAXI,
74  DELIVERY,
76  TRUCK,
82  BUS,
84  BUS_COACH,
90  RAIL,
92  RAIL_CAR,
94  RAIL_CARGO,
96  E_VEHICLE,
98  ANT,
100  SHIP,
102  EMERGENCY,
104  FIREBRIGADE,
106  POLICE,
108  RICKSHAW,
110  SCOOTER,
112  AIRCRAFT
113 };
114 
115 
116 
140 enum SUMOVehicleClass : int64_t {
143 
145 
146 
150  SVC_EMERGENCY = 1 << 1,
152  SVC_AUTHORITY = 1 << 2,
154  SVC_ARMY = 1 << 3,
156  SVC_VIP = 1 << 4,
158 
159 
161 
162  SVC_PEDESTRIAN = 1 << 5,
164 
166  SVC_PASSENGER = 1 << 6,
168  SVC_HOV = 1 << 7,
170  SVC_TAXI = 1 << 8,
172  SVC_BUS = 1 << 9,
174  SVC_COACH = 1 << 10,
176  SVC_DELIVERY = 1 << 11,
178  SVC_TRUCK = 1 << 12,
180  SVC_TRAILER = 1 << 13,
182  SVC_MOTORCYCLE = 1 << 14,
184  SVC_MOPED = 1 << 15,
186  SVC_BICYCLE = 1 << 16,
188  SVC_E_VEHICLE = 1 << 17,
189 
191  SVC_TRAM = 1 << 18,
193  SVC_RAIL_URBAN = 1 << 19,
195  SVC_RAIL = 1 << 20,
197  SVC_RAIL_ELECTRIC = 1 << 21,
199  SVC_RAIL_FAST = 1 << 22,
200 
202  SVC_SHIP = 1 << 23,
203 
204  SVC_CONTAINER = 1 << 24,
205  SVC_CABLE_CAR = 1 << 25,
206  SVC_SUBWAY = 1 << 26,
207  SVC_AIRCRAFT = 1 << 27,
208  SVC_WHEELCHAIR = 1 << 28,
209  SVC_SCOOTER = 1 << 29,
210  SVC_DRONE = 1 << 30,
211 
213  SVC_CUSTOM1 = (long long int)1 << 31,
215  SVC_CUSTOM2 = (long long int)1 << 32,
217 
229 };
230 
233 extern std::set<std::string> deprecatedVehicleClassesSeen;
235 
237 typedef long long int SVCPermissions;
238 
240 extern const SVCPermissions SVCAll;
241 
243 extern const SVCPermissions SVC_UNSPECIFIED;
244 
250 typedef int SUMOEmissionClass;
251 
254 
255 // ===========================================================================
256 // Stop Offsets
257 // ===========================================================================
258 
260 class StopOffset {
261 
262 public:
264  StopOffset();
265 
267  StopOffset(const SUMOSAXAttributes& attrs, bool& ok);
268 
270  bool isDefined() const;
271 
273  void reset();
274 
277 
279  std::string getExceptions() const;
280 
282  double getOffset() const;
283 
285  void setPermissions(const SVCPermissions permissions);
286 
288  void setExceptions(const std::string permissions);
289 
291  void setOffset(const double offset);
292 
294  bool operator==(StopOffset const& other) const;
295 
297  bool operator!=(StopOffset const& other) const;
298 
299 private:
302 
304  double myOffset;
305 };
306 
307 // ===========================================================================
308 // method declarations
309 // ===========================================================================
310 
311 // ---------------------------------------------------------------------------
312 // abstract vehicle class / purpose
313 // ---------------------------------------------------------------------------
314 
320 extern const std::string& getVehicleClassNames(SVCPermissions permissions, bool expand = false);
321 
326 extern const std::vector<std::string>& getVehicleClassNamesList(SVCPermissions permissions);
327 
333 extern SUMOVehicleClass getVehicleClassID(const std::string& name);
334 
339 extern SVCPermissions getVehicleClassCompoundID(const std::string& name);
340 
348 extern SVCPermissions parseVehicleClasses(const std::string& allowedS);
349 
351 extern bool canParseVehicleClasses(const std::string& classes);
352 
357 extern SVCPermissions parseVehicleClasses(const std::string& allowedS, const std::string& disallowedS, const MMVersion& networkVersion = NETWORK_VERSION);
358 
363 extern SVCPermissions parseVehicleClasses(const std::vector<std::string>& allowedS);
364 
370 extern SVCPermissions extraDisallowed(SVCPermissions disallowed, const MMVersion& networkVersion);
371 
374 
376 extern void writePermissions(OutputDevice& into, SVCPermissions permissions);
377 
379 extern void writePreferences(OutputDevice& into, SVCPermissions preferred);
380 
381 // ---------------------------------------------------------------------------
382 // vehicle shape class
383 // ---------------------------------------------------------------------------
384 
389 extern std::string getVehicleShapeName(SUMOVehicleShape id);
390 
395 extern SUMOVehicleShape getVehicleShapeID(const std::string& name);
396 
398 extern bool canParseVehicleShape(const std::string& shape);
399 
404 extern bool isRailway(SVCPermissions permissions);
405 
410 extern bool isTram(SVCPermissions permissions);
411 
416 extern bool isBikepath(SVCPermissions permissions);
417 
422 extern bool isWaterway(SVCPermissions permissions);
423 
428 extern bool isAirway(SVCPermissions permissions);
429 
434 extern bool isForbidden(SVCPermissions permissions);
435 
440 extern bool isSidewalk(SVCPermissions permissions);
441 
446 extern bool isForVulnerableModes(SVCPermissions permissions);
447 
452 extern bool noVehicles(SVCPermissions permissions);
453 
459 extern double getDefaultVehicleLength(const SUMOVehicleClass vc = SVC_IGNORING);
460 
461 // ---------------------------------------------------------------------------
462 // default vehicle type parameter
463 // ---------------------------------------------------------------------------
464 extern const std::string DEFAULT_VTYPE_ID;
465 extern const std::string DEFAULT_PEDTYPE_ID;
466 extern const std::string DEFAULT_BIKETYPE_ID;
467 extern const std::string DEFAULT_CONTAINERTYPE_ID;
468 extern const std::string DEFAULT_TAXITYPE_ID;
469 extern const std::string DEFAULT_RAILTYPE_ID;
470 extern const std::set<std::string> DEFAULT_VTYPES;
471 
472 extern const double DEFAULT_VEH_PROB; // !!! does this belong here?
473 
474 extern const double DEFAULT_PEDESTRIAN_SPEED;
475 extern const double DEFAULT_BICYCLE_SPEED;
476 
477 extern const double DEFAULT_CONTAINER_TRANSHIP_SPEED;
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand=false)
Returns the ids of the given classes, divided using a ' '.
SVCPermissions extraDisallowed(SVCPermissions disallowed, const MMVersion &networkVersion)
Interprets disallowed vehicles depending on network version.
bool canParseVehicleShape(const std::string &shape)
Checks whether the given string contains only known vehicle shape.
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
const SVCPermissions SVCAll
all VClasses are allowed
int SUMOEmissionClass
bool isForVulnerableModes(SVCPermissions permissions)
Returns whether an edge with the given permissions allows only vulnerable road users.
std::set< std::string > deprecatedVehicleClassesSeen
const std::string DEFAULT_TAXITYPE_ID
const double DEFAULT_VEH_PROB
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a railway edge.
const SVCPermissions SVC_UNSPECIFIED
permissions not specified
double getDefaultVehicleLength(const SUMOVehicleClass vc=SVC_IGNORING)
Returns the default vehicle length This put into a function so it can be used by NBVehicle.
const std::string DEFAULT_RAILTYPE_ID
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a waterway edge.
bool isAirway(SVCPermissions permissions)
Returns whether an edge with the given permissions is an airway edge.
bool isTram(SVCPermissions permissions)
Returns whether an edge with the given permissions is a tram edge.
const SUMOEmissionClass EMISSION_CLASS_UNSPECIFIED
emission class not specified
StringBijection< SUMOVehicleShape > SumoVehicleShapeStrings
const std::vector< std::string > & getVehicleClassNamesList(SVCPermissions permissions)
Returns the ids of the given classes, divided using a ' '.
const std::string DEFAULT_PEDTYPE_ID
const std::set< std::string > DEFAULT_VTYPES
void writePermissions(OutputDevice &into, SVCPermissions permissions)
writes allowed disallowed attributes if needed;
SUMOVehicleShape getVehicleShapeID(const std::string &name)
Returns the class id of the shape class given by its name.
bool isForbidden(SVCPermissions permissions)
Returns whether an edge with the given permissions is a forbidden edge.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
SUMOVehicleShape
Definition of vehicle classes to differ between different appearances.
@ RICKSHAW
render as a rickshaw
@ BUS
render as a bus
@ RAIL_CARGO
render as a cargo train
@ EMERGENCY
render as an emergency vehicle
@ RAIL
render as a rail
@ PASSENGER_VAN
render as a van
@ PASSENGER
render as a passenger vehicle
@ SCOOTER
render as a scooter
@ RAIL_CAR
render as a (city) rail without locomotive
@ SHIP
render as a arbitrary ship
@ DELIVERY
render as a delivery vehicle
@ BICYCLE
render as a bicycle
@ MOTORCYCLE
render as a motorcycle
@ UNKNOWN
not defined
@ BUS_TROLLEY
render as a trolley bus
@ TAXI
automated car (with cruise controllers)
@ E_VEHICLE
render as a (futuristic) e-vehicle
@ ANT
render as a giant ant
@ TRUCK
render as a transport vehicle
@ AIRCRAFT
render as aircraft
@ FIREBRIGADE
render as a fire brigade
@ PASSENGER_HATCHBACK
render as a hatchback passenger vehicle ("Fliessheck")
@ MOPED
render as a moped
@ BUS_FLEXIBLE
render as a flexible city bus
@ TRUCK_1TRAILER
render as a transport vehicle with one trailer
@ PASSENGER_SEDAN
render as a sedan passenger vehicle ("Stufenheck")
@ BUS_COACH
render as a coach
@ POLICE
render as a police car
@ PASSENGER_WAGON
render as a wagon passenger vehicle ("Combi")
@ TRUCK_SEMITRAILER
render as a semi-trailer transport vehicle ("Sattelschlepper")
@ PEDESTRIAN
render as a pedestrian
const double DEFAULT_PEDESTRIAN_SPEED
const double DEFAULT_BICYCLE_SPEED
bool isSidewalk(SVCPermissions permissions)
Returns whether an edge with the given permissions is a sidewalk.
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
std::string getVehicleShapeName(SUMOVehicleShape id)
Returns the class name of the shape class given by its id.
void writePreferences(OutputDevice &into, SVCPermissions preferred)
writes allowed disallowed attributes if needed;
bool noVehicles(SVCPermissions permissions)
Returns whether an edge with the given permissions forbids vehicles.
const std::string DEFAULT_VTYPE_ID
bool isBikepath(SVCPermissions permissions)
Returns whether an edge with the given permissions is a bicycle edge.
const std::string DEFAULT_CONTAINERTYPE_ID
SVCPermissions getVehicleClassCompoundID(const std::string &name)
Returns the OR'ed id of the compound class given by its name.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_SHIP
is an arbitrary ship
@ SVC_PRIVATE
private vehicles
@ SVC_VIP
vip vehicles
@ SVC_HOV
vehicle is a HOV
@ SVC_TRUCK
vehicle is a large transport vehicle
@ SVC_ROAD_CLASSES
classes which drive on roads
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_CUSTOM2
is a user-defined type
@ SVC_WHEELCHAIR
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_RAIL_CLASSES
classes which drive on tracks
@ SVC_COACH
vehicle is a coach
@ SVC_CABLE_CAR
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_CONTAINER
@ SVC_SCOOTER
@ SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
@ SVC_TRAILER
vehicle is a large transport vehicle
@ SVC_CUSTOM1
is a user-defined type
@ SVC_ARMY
army vehicles
@ SVC_DRONE
@ SVC_RAIL_ELECTRIC
rail vehicle that requires electrified tracks
@ SVC_NON_ROAD
classes which (normally) do not drive on normal roads
@ SVC_DELIVERY
vehicle is a small delivery vehicle
@ SVC_RAIL_URBAN
vehicle is a city rail
@ SVC_MOTORCYCLE
vehicle is a motorcycle
@ SVC_EMERGENCY
public emergency vehicles
@ SVC_MOPED
vehicle is a moped
@ SVC_AUTHORITY
authorities vehicles
@ SVC_VULNERABLE
@ SVC_TRAM
vehicle is a light rail
@ SVC_PUBLIC_CLASSES
public transport
@ SVC_TAXI
vehicle is a taxi
@ SVC_BUS
vehicle is a bus
@ SVC_E_VEHICLE
is an electric vehicle
@ SVC_AIRCRAFT
@ SVC_SUBWAY
@ SVC_PEDESTRIAN
pedestrian
const double DEFAULT_CONTAINER_TRANSHIP_SPEED
const SUMOVehicleClass SUMOVehicleClass_MAX
const std::string DEFAULT_BIKETYPE_ID
std::pair< int, double > MMVersion
(M)ajor/(M)inor version for written networks and default version for loading
Definition: StdDefs.h:67
const MMVersion NETWORK_VERSION(1, 20)
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61
Encapsulated SAX-Attributes.
stop offset
void setOffset(const double offset)
set offset
StopOffset()
constructor
bool isDefined() const
check if stopOffset was defined
void reset()
reset stopOffset
SVCPermissions getPermissions() const
get permissions
void setExceptions(const std::string permissions)
set exceptions (used in netedit)
SVCPermissions myPermissions
permissions (allowed)
double myOffset
offset
std::string getExceptions() const
get exceptions (used in netedit)
void setPermissions(const SVCPermissions permissions)
update permissions
bool operator==(StopOffset const &other) const
comparator
bool operator!=(StopOffset const &other) const
comparator
double getOffset() const
get offset