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.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
19 // Definitions of SUMO vehicle classes and helper functions
20 /****************************************************************************/
21 #ifndef SUMOVehicleClass_h
22 #define SUMOVehicleClass_h
23 
24 
25 // ===========================================================================
26 // included modules
27 // ===========================================================================
28 
29 #include <string>
30 #include <set>
31 #include <limits>
32 #include <utils/common/StdDefs.h>
36 
37 
38 // ===========================================================================
39 // class declarations
40 // ===========================================================================
41 class OutputDevice;
42 class SUMOSAXAttributes;
43 
44 // ===========================================================================
45 // enum definitions
46 // ===========================================================================
73  //SVS_PASSENGER_AUTOMATED,
110 };
111 
112 
113 
137 
139 
140 
144  SVC_EMERGENCY = 1 << 1,
146  SVC_AUTHORITY = 1 << 2,
148  SVC_ARMY = 1 << 3,
150  SVC_VIP = 1 << 4,
152 
153 
155 
156  SVC_PEDESTRIAN = 1 << 5,
158 
160  SVC_PASSENGER = 1 << 6,
162  SVC_HOV = 1 << 7,
164  SVC_TAXI = 1 << 8,
166  SVC_BUS = 1 << 9,
168  SVC_COACH = 1 << 10,
170  SVC_DELIVERY = 1 << 11,
172  SVC_TRUCK = 1 << 12,
174  SVC_TRAILER = 1 << 13,
176  SVC_MOTORCYCLE = 1 << 14,
178  SVC_MOPED = 1 << 15,
180  SVC_BICYCLE = 1 << 16,
182  SVC_E_VEHICLE = 1 << 17,
183 
185  SVC_TRAM = 1 << 18,
187  SVC_RAIL_URBAN = 1 << 19,
189  SVC_RAIL = 1 << 20,
191  SVC_RAIL_ELECTRIC = 1 << 21,
193  SVC_RAIL_FAST = 1 << 22,
194 
196  SVC_SHIP = 1 << 23,
197 
199  SVC_CUSTOM1 = 1 << 24,
201  SVC_CUSTOM2 = 1 << 25,
203 
211 };
212 
213 extern const int SUMOVehicleClass_MAX;
215 extern std::set<std::string> deprecatedVehicleClassesSeen;
217 
219 typedef int SVCPermissions;
220 
222 extern const SVCPermissions SVCAll;
223 
225 extern const SVCPermissions SVC_UNSPECIFIED;
226 
232 typedef int SUMOEmissionClass;
233 
234 
235 // ===========================================================================
236 // method declarations
237 // ===========================================================================
238 
239 // ---------------------------------------------------------------------------
240 // abstract vehicle class / purpose
241 // ---------------------------------------------------------------------------
247 extern const std::string& getVehicleClassNames(SVCPermissions permissions, bool expand = false);
248 
253 extern const std::vector<std::string>& getVehicleClassNamesList(SVCPermissions permissions);
254 
260 extern SUMOVehicleClass getVehicleClassID(const std::string& name);
261 
266 extern int getVehicleClassCompoundID(const std::string& name);
267 
275 extern SVCPermissions parseVehicleClasses(const std::string& allowedS);
276 
278 extern bool canParseVehicleClasses(const std::string& classes);
279 
284 extern SVCPermissions parseVehicleClasses(const std::string& allowedS, const std::string& disallowedS, double networkVersion = NETWORK_VERSION);
285 
290 extern SVCPermissions parseVehicleClasses(const std::vector<std::string>& allowedS);
291 
294 
296 extern void writePermissions(OutputDevice& into, SVCPermissions permissions);
297 
299 extern void writePreferences(OutputDevice& into, SVCPermissions preferred);
300 
302 extern std::map<SVCPermissions, double> parseStopOffsets(const SUMOSAXAttributes& attrs, bool& ok);
303 
304 // ---------------------------------------------------------------------------
305 // vehicle shape class
306 // ---------------------------------------------------------------------------
311 extern std::string getVehicleShapeName(SUMOVehicleShape id);
312 
317 extern SUMOVehicleShape getVehicleShapeID(const std::string& name);
318 
320 extern bool canParseVehicleShape(const std::string& shape);
321 
326 extern bool isRailway(SVCPermissions permissions);
327 
332 extern bool isWaterway(SVCPermissions permissions);
333 
338 extern bool isForbidden(SVCPermissions permissions);
339 
344 extern bool isSidewalk(SVCPermissions permissions);
345 
350 extern bool noVehicles(SVCPermissions permissions);
351 
352 // ---------------------------------------------------------------------------
353 // default vehicle type parameter
354 // ---------------------------------------------------------------------------
355 extern const std::string DEFAULT_VTYPE_ID;
356 extern const std::string DEFAULT_PEDTYPE_ID;
357 extern const std::string DEFAULT_BIKETYPE_ID;
358 
359 extern const double DEFAULT_VEH_PROB; // !!! does this belong here?
360 
361 extern const double DEFAULT_PEDESTRIAN_SPEED;
362 
363 extern const double DEFAULT_CONTAINER_TRANSHIP_SPEED;
364 
365 #endif
366 
367 /****************************************************************************/
368 
SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
Definition: SUMOVehicleClass.h:193
SVC_PEDESTRIAN
pedestrian
Definition: SUMOVehicleClass.h:157
SUMOVehicleClass
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
Definition: SUMOVehicleClass.h:134
SVC_E_VEHICLE
is an electric vehicle
Definition: SUMOVehicleClass.h:182
SVC_EMERGENCY
public emergency vehicles
Definition: SUMOVehicleClass.h:144
SVS_MOTORCYCLE
render as a motorcycle
Definition: SUMOVehicleClass.h:61
SVC_COACH
vehicle is a coach
Definition: SUMOVehicleClass.h:168
DEFAULT_PEDTYPE_ID
const std::string DEFAULT_PEDTYPE_ID
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
getVehicleClassNamesList
const std::vector< std::string > & getVehicleClassNamesList(SVCPermissions permissions)
Returns the ids of the given classes, divided using a ' '.
Definition: SUMOVehicleClass.cpp:182
getVehicleClassID
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
Definition: SUMOVehicleClass.cpp:201
NETWORK_VERSION
const double NETWORK_VERSION
version for written networks and default version for loading
Definition: StdDefs.h:66
StringBijection.h
SVS_BUS_TROLLEY
render as a trolley bus
Definition: SUMOVehicleClass.h:89
SVC_CUSTOM2
is a user-defined type
Definition: SUMOVehicleClass.h:201
writePreferences
void writePreferences(OutputDevice &into, SVCPermissions preferred)
writes allowed disallowed attributes if needed;
Definition: SUMOVehicleClass.cpp:333
getVehicleClassCompoundID
int getVehicleClassCompoundID(const std::string &name)
Returns the OR'ed id of the compound class given by its name.
Definition: SUMOVehicleClass.cpp:210
SVS_TRUCK
render as a transport vehicle
Definition: SUMOVehicleClass.h:77
SVC_BICYCLE
vehicle is a bicycle
Definition: SUMOVehicleClass.h:180
SVC_DELIVERY
vehicle is a small delivery vehicle
Definition: SUMOVehicleClass.h:170
SUMOEmissionClass
int SUMOEmissionClass
Definition: SUMOVehicleClass.h:232
SVC_NON_ROAD
classes which (normally) do not drive on normal roads
Definition: SUMOVehicleClass.h:210
getVehicleShapeName
std::string getVehicleShapeName(SUMOVehicleShape id)
Returns the class name of the shape class given by its id.
Definition: SUMOVehicleClass.cpp:359
getVehicleShapeID
SUMOVehicleShape getVehicleShapeID(const std::string &name)
Returns the class id of the shape class given by its name.
Definition: SUMOVehicleClass.cpp:343
SVC_RAIL
vehicle is a not electrified rail
Definition: SUMOVehicleClass.h:189
SVC_RAIL_URBAN
vehicle is a city rail
Definition: SUMOVehicleClass.h:187
isWaterway
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permission is a waterway edge.
Definition: SUMOVehicleClass.cpp:370
SVC_AUTHORITY
authorities vehicles
Definition: SUMOVehicleClass.h:146
SVS_BUS_FLEXIBLE
render as a flexible city bus
Definition: SUMOVehicleClass.h:87
SVS_PASSENGER_SEDAN
render as a sedan passenger vehicle ("Stufenheck")
Definition: SUMOVehicleClass.h:65
SVC_PRIVATE
private vehicles
Definition: SUMOVehicleClass.h:142
SVS_UNKNOWN
not defined
Definition: SUMOVehicleClass.h:53
SVS_BICYCLE
render as a bicycle
Definition: SUMOVehicleClass.h:57
DEFAULT_CONTAINER_TRANSHIP_SPEED
const double DEFAULT_CONTAINER_TRANSHIP_SPEED
noVehicles
bool noVehicles(SVCPermissions permissions)
Returns whether an edge with the given permission forbids vehicles.
Definition: SUMOVehicleClass.cpp:388
SVC_TRAM
vehicle is a light rail
Definition: SUMOVehicleClass.h:185
SVS_DELIVERY
automated car (with cruise controllers)
Definition: SUMOVehicleClass.h:75
invertPermissions
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
Definition: SUMOVehicleClass.cpp:286
SUMOVehicleClass_MAX
const int SUMOVehicleClass_MAX
Definition: SUMOVehicleClass.cpp:145
StringBijection
Definition: StringBijection.h:44
SVC_TRUCK
vehicle is a large transport vehicle
Definition: SUMOVehicleClass.h:172
SVC_CUSTOM1
is a user-defined type
Definition: SUMOVehicleClass.h:199
SVC_ARMY
army vehicles
Definition: SUMOVehicleClass.h:148
SVS_BUS
render as a bus
Definition: SUMOVehicleClass.h:83
SVCPermissions
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
Definition: SUMOVehicleClass.h:219
SVC_RAIL_CLASSES
classes which drive on tracks
Definition: SUMOVehicleClass.h:205
DEFAULT_PEDESTRIAN_SPEED
const double DEFAULT_PEDESTRIAN_SPEED
SVC_HOV
vehicle is a HOV
Definition: SUMOVehicleClass.h:162
SUMOVehicleShape
SUMOVehicleShape
Definition of vehicle classes to differ between different appearences.
Definition: SUMOVehicleClass.h:51
DEFAULT_VTYPE_ID
const std::string DEFAULT_VTYPE_ID
SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
Definition: SUMOVehicleClass.h:160
SVC_RAIL_ELECTRIC
rail vehicle that requires electrified tracks
Definition: SUMOVehicleClass.h:191
SVS_RAIL_CARGO
render as a cargo train
Definition: SUMOVehicleClass.h:95
SVS_PASSENGER_HATCHBACK
render as a hatchback passenger vehicle ("Fliessheck")
Definition: SUMOVehicleClass.h:67
canParseVehicleShape
bool canParseVehicleShape(const std::string &shape)
Checks whether the given string contains only known vehicle shape.
Definition: SUMOVehicleClass.cpp:353
SVS_MOPED
render as a moped
Definition: SUMOVehicleClass.h:59
UtilExceptions.h
SVS_POLICE
render as a police car
Definition: SUMOVehicleClass.h:107
isRailway
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permission is a railway edge.
Definition: SUMOVehicleClass.cpp:364
parseStopOffsets
std::map< SVCPermissions, double > parseStopOffsets(const SUMOSAXAttributes &attrs, bool &ok)
Extract stopOffsets from attributes of stopOffset element.
Definition: SUMOVehicleClass.cpp:393
SVC_VIP
vip vehicles
Definition: SUMOVehicleClass.h:150
SVC_SHIP
is an arbitrary ship
Definition: SUMOVehicleClass.h:196
SVS_RAIL_CAR
render as a (city) rail without locomotive
Definition: SUMOVehicleClass.h:93
SVS_PASSENGER_VAN
render as a van
Definition: SUMOVehicleClass.h:71
SVS_PEDESTRIAN
render as a pedestrian
Definition: SUMOVehicleClass.h:55
getVehicleClassNames
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand=false)
Returns the ids of the given classes, divided using a ' '.
Definition: SUMOVehicleClass.cpp:169
canParseVehicleClasses
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
Definition: SUMOVehicleClass.cpp:252
SVC_MOPED
vehicle is a moped
Definition: SUMOVehicleClass.h:178
SVC_TAXI
vehicle is a taxi
Definition: SUMOVehicleClass.h:164
SVC_ROAD_CLASSES
classes which drive on roads
Definition: SUMOVehicleClass.h:207
parseVehicleClasses
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
Definition: SUMOVehicleClass.cpp:223
SVCAll
const SVCPermissions SVCAll
all VClasses are allowed
Definition: SUMOVehicleClass.cpp:147
SVS_PASSENGER
render as a passenger vehicle
Definition: SUMOVehicleClass.h:63
SVS_EMERGENCY
render as an emergency vehicle
Definition: SUMOVehicleClass.h:103
SVS_E_VEHICLE
render as a (futuristic) e-vehicle
Definition: SUMOVehicleClass.h:97
SVS_SHIP
render as a arbitrary ship
Definition: SUMOVehicleClass.h:101
SumoVehicleClassStrings
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings
SVS_TRUCK_SEMITRAILER
render as a semi-trailer transport vehicle ("Sattelschlepper")
Definition: SUMOVehicleClass.h:79
writePermissions
void writePermissions(OutputDevice &into, SVCPermissions permissions)
writes allowed disallowed attributes if needed;
Definition: SUMOVehicleClass.cpp:310
isForbidden
bool isForbidden(SVCPermissions permissions)
Returns whether an edge with the given permission is a forbidden edge.
Definition: SUMOVehicleClass.cpp:376
SVS_FIREBRIGADE
render as a fire brigade
Definition: SUMOVehicleClass.h:105
SVC_TRAILER
vehicle is a large transport vehicle
Definition: SUMOVehicleClass.h:174
SVC_BUS
vehicle is a bus
Definition: SUMOVehicleClass.h:166
SumoVehicleShapeStrings
StringBijection< SUMOVehicleShape > SumoVehicleShapeStrings
SVS_ANT
render as a giant ant
Definition: SUMOVehicleClass.h:99
StdDefs.h
SVS_TRUCK_1TRAILER
render as a transport vehicle with one trailer
Definition: SUMOVehicleClass.h:81
SVS_PASSENGER_WAGON
render as a wagon passenger vehicle ("Combi")
Definition: SUMOVehicleClass.h:69
isSidewalk
bool isSidewalk(SVCPermissions permissions)
Returns whether an edge with the given permission is a sidewalk.
Definition: SUMOVehicleClass.cpp:382
deprecatedVehicleClassesSeen
std::set< std::string > deprecatedVehicleClassesSeen
Definition: SUMOVehicleClass.cpp:85
SVC_MOTORCYCLE
vehicle is a motorcycle
Definition: SUMOVehicleClass.h:176
SVS_BUS_COACH
render as a coach
Definition: SUMOVehicleClass.h:85
SVS_RICKSHAW
render as a rickshaw
Definition: SUMOVehicleClass.h:109
SVC_UNSPECIFIED
const SVCPermissions SVC_UNSPECIFIED
permissions not specified
Definition: SUMOVehicleClass.cpp:149
SVC_IGNORING
vehicles ignoring classes
Definition: SUMOVehicleClass.h:136
DEFAULT_BIKETYPE_ID
const std::string DEFAULT_BIKETYPE_ID
SUMOSAXAttributes
Encapsulated SAX-Attributes.
Definition: SUMOSAXAttributes.h:57
DEFAULT_VEH_PROB
const double DEFAULT_VEH_PROB
SUMOXMLDefinitions.h
SVS_RAIL
render as a rail
Definition: SUMOVehicleClass.h:91