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 isForWeakModes(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
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 permission 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 permission is a waterway edge.
bool isAirway(SVCPermissions permissions)
Returns whether an edge with the given permission is an airway edge.
bool isTram(SVCPermissions permissions)
Returns whether an edge with the given permission 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 permission 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 permission 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 permission forbids vehicles.
const std::string DEFAULT_VTYPE_ID
bool isBikepath(SVCPermissions permissions)
Returns whether an edge with the given permission 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.
bool isForWeakModes(SVCPermissions permissions)
Returns whether an edge with the given permission is a sidewalk.
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_WEAK
@ 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_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