Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2002-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 : /****************************************************************************/
14 : /// @file SUMOXMLDefinitions.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @author Jakob Erdmann
17 : /// @author Clemens Honomichl
18 : /// @author Piotr Woznica
19 : /// @author Michael Behrisch
20 : /// @author Walter Bamberger
21 : /// @date Sept 2002
22 : ///
23 : // Definitions of elements and attributes known by SUMO
24 : /****************************************************************************/
25 : #include <config.h>
26 :
27 : #include <cassert>
28 : #include <utils/common/StringBijection.h>
29 : #include <utils/common/StringTokenizer.h>
30 : #include <utils/common/StringUtils.h>
31 :
32 : #include "SUMOXMLDefinitions.h"
33 :
34 : // ===========================================================================
35 : // definitions
36 : // ===========================================================================
37 :
38 : StringBijection<int>::Entry SUMOXMLDefinitions::tags[] = {
39 : // Simulation elements
40 : { "net", SUMO_TAG_NET },
41 : { "edge", SUMO_TAG_EDGE },
42 : { "lane", SUMO_TAG_LANE },
43 : { "neigh", SUMO_TAG_NEIGH },
44 : { "poly", SUMO_TAG_POLY },
45 : { "poi", SUMO_TAG_POI },
46 : { "junction", SUMO_TAG_JUNCTION },
47 : { "restriction", SUMO_TAG_RESTRICTION },
48 : { "meso", SUMO_TAG_MESO },
49 : { "busStop", SUMO_TAG_BUS_STOP },
50 : { "trainStop", SUMO_TAG_TRAIN_STOP },
51 : { "ptLine", SUMO_TAG_PT_LINE },
52 : { "access", SUMO_TAG_ACCESS },
53 : { "containerStop", SUMO_TAG_CONTAINER_STOP },
54 : { "chargingStation", SUMO_TAG_CHARGING_STATION },
55 : { "parkingArea", SUMO_TAG_PARKING_AREA },
56 : { "space", SUMO_TAG_PARKING_SPACE },
57 : { "e1Detector", SUMO_TAG_E1DETECTOR },
58 : { "inductionLoop", SUMO_TAG_INDUCTION_LOOP },
59 : { "e2Detector", SUMO_TAG_E2DETECTOR },
60 : { "laneAreaDetector", SUMO_TAG_LANE_AREA_DETECTOR },
61 : { "multiLaneAreaDetector", GNE_TAG_MULTI_LANE_AREA_DETECTOR },
62 : { "e3Detector", SUMO_TAG_E3DETECTOR },
63 : { "entryExitDetector", SUMO_TAG_ENTRY_EXIT_DETECTOR },
64 : { "detEntry", SUMO_TAG_DET_ENTRY },
65 : { "detExit", SUMO_TAG_DET_EXIT },
66 : { "edgeData", SUMO_TAG_MEANDATA_EDGE },
67 : { "laneData", SUMO_TAG_MEANDATA_LANE },
68 : { "edgeFollowDetector", SUMO_TAG_EDGEFOLLOWDETECTOR },
69 : { "instantInductionLoop", SUMO_TAG_INSTANT_INDUCTION_LOOP },
70 : { "routeProbe", SUMO_TAG_ROUTEPROBE },
71 : { "calibrator", SUMO_TAG_CALIBRATOR },
72 : { "calibratorLane", GNE_TAG_CALIBRATOR_LANE },
73 : { "calibratorFlow", GNE_TAG_CALIBRATOR_FLOW },
74 : { "rerouter", SUMO_TAG_REROUTER },
75 : { "rerouterSymbol", GNE_TAG_REROUTER_SYMBOL },
76 : { "interval", SUMO_TAG_INTERVAL },
77 : { "destProbReroute", SUMO_TAG_DEST_PROB_REROUTE },
78 : { "closingReroute", SUMO_TAG_CLOSING_REROUTE },
79 : { "closingLaneReroute", SUMO_TAG_CLOSING_LANE_REROUTE },
80 : { "routeProbReroute", SUMO_TAG_ROUTE_PROB_REROUTE },
81 : { "parkingAreaReroute", SUMO_TAG_PARKING_AREA_REROUTE },
82 : { "viaProbReroute", SUMO_TAG_VIA_PROB_REROUTE },
83 : { "step", SUMO_TAG_STEP },
84 : { "variableSpeedSign", SUMO_TAG_VSS },
85 : { "variableSpeedSignSymbol", GNE_TAG_VSS_SYMBOL },
86 : { "vaporizer", SUMO_TAG_VAPORIZER },
87 : { "tractionSubstation", SUMO_TAG_TRACTION_SUBSTATION },
88 : { "overheadWireSegment", SUMO_TAG_OVERHEAD_WIRE_SEGMENT }, // <- Deprecate
89 : { "overheadWire", SUMO_TAG_OVERHEAD_WIRE_SECTION },
90 : { "overheadWireClamp", SUMO_TAG_OVERHEAD_WIRE_CLAMP },
91 : { "vTypeProbe", SUMO_TAG_VTYPEPROBE },
92 : { "routes", SUMO_TAG_ROUTES },
93 : { "trip", SUMO_TAG_TRIP },
94 : { "tripJunctions", GNE_TAG_TRIP_JUNCTIONS },
95 : { "tripTAZs", GNE_TAG_TRIP_TAZS },
96 : { "vehicle", SUMO_TAG_VEHICLE },
97 : { "vehicleWithRoute", GNE_TAG_VEHICLE_WITHROUTE },
98 : { "flow", SUMO_TAG_FLOW },
99 : { "flowJunctions", GNE_TAG_FLOW_JUNCTIONS },
100 : { "flowTAZs", GNE_TAG_FLOW_TAZS },
101 : { "flowState", SUMO_TAG_FLOWSTATE },
102 : { "vType", SUMO_TAG_VTYPE },
103 : { "route", SUMO_TAG_ROUTE },
104 : { "routeEmbedded", GNE_TAG_ROUTE_EMBEDDED },
105 : { "request", SUMO_TAG_REQUEST },
106 : { "source", SUMO_TAG_SOURCE },
107 : { "taz", SUMO_TAG_TAZ },
108 : { "tazSource", SUMO_TAG_TAZSOURCE },
109 : { "tazSink", SUMO_TAG_TAZSINK },
110 : { "trafficLight", SUMO_TAG_TRAFFIC_LIGHT },
111 : { "tlLogic", SUMO_TAG_TLLOGIC },
112 : { "phase", SUMO_TAG_PHASE },
113 : { "condition", SUMO_TAG_CONDITION },
114 : { "assignment", SUMO_TAG_ASSIGNMENT },
115 : { "function", SUMO_TAG_FUNCTION },
116 : { "edgeControl", SUMO_TAG_EDGECONTROL },
117 :
118 : { "edgeRelation", SUMO_TAG_EDGEREL },
119 : { "tazRelation", SUMO_TAG_TAZREL },
120 : { "timedEvent", SUMO_TAG_TIMEDEVENT },
121 : { "fromEdge", SUMO_TAG_FROMEDGE },
122 : { "toEdge", SUMO_TAG_TOEDGE },
123 : { "sink", SUMO_TAG_SINK },
124 : { "param", SUMO_TAG_PARAM },
125 : { "WAUT", SUMO_TAG_WAUT },
126 : { "wautSwitch", SUMO_TAG_WAUT_SWITCH },
127 : { "wautJunction", SUMO_TAG_WAUT_JUNCTION },
128 : { "segment", SUMO_TAG_SEGMENT },
129 : { "delete", SUMO_TAG_DEL },
130 : { "stop", SUMO_TAG_STOP },
131 : { "stopBusStop", GNE_TAG_STOP_BUSSTOP },
132 : { "stopTrainStop", GNE_TAG_STOP_TRAINSTOP },
133 : { "stopContainerStop", GNE_TAG_STOP_CONTAINERSTOP },
134 : { "stopChargingStation", GNE_TAG_STOP_CHARGINGSTATION },
135 : { "stopParkingArea", GNE_TAG_STOP_PARKINGAREA },
136 : { "stopLane", GNE_TAG_STOP_LANE },
137 : { "polygonType", SUMO_TAG_POLYTYPE },
138 : { "connection", SUMO_TAG_CONNECTION },
139 : { "conflict", SUMO_TAG_CONFLICT },
140 : { "prohibition", SUMO_TAG_PROHIBITION },
141 : { "split", SUMO_TAG_SPLIT },
142 : { "node", SUMO_TAG_NODE },
143 : { "type", SUMO_TAG_TYPE },
144 : { "laneType", SUMO_TAG_LANETYPE },
145 : { "detectorDefinition", SUMO_TAG_DETECTOR_DEFINITION },
146 : { "routeDistribution", SUMO_TAG_ROUTE_DISTRIBUTION },
147 : { "vTypeDistribution", SUMO_TAG_VTYPE_DISTRIBUTION },
148 : { "roundabout", SUMO_TAG_ROUNDABOUT },
149 : { "join", SUMO_TAG_JOIN },
150 : { "joinExclude", SUMO_TAG_JOINEXCLUDE },
151 : { "crossing", SUMO_TAG_CROSSING },
152 : { "walkingArea", SUMO_TAG_WALKINGAREA },
153 : { "stopOffset", SUMO_TAG_STOPOFFSET },
154 : { "railSignalConstraints", SUMO_TAG_RAILSIGNAL_CONSTRAINTS },
155 : { "predecessor", SUMO_TAG_PREDECESSOR },
156 : { "insertionPredecessor", SUMO_TAG_INSERTION_PREDECESSOR },
157 : { "foeInsertion", SUMO_TAG_FOE_INSERTION },
158 : { "insertionOrder", SUMO_TAG_INSERTION_ORDER },
159 : { "bidiPredecessor", SUMO_TAG_BIDI_PREDECESSOR },
160 : { "railSignalConstraintTracker", SUMO_TAG_RAILSIGNAL_CONSTRAINT_TRACKER },
161 : { "link", SUMO_TAG_LINK },
162 : { "approaching", SUMO_TAG_APPROACHING },
163 : // OSM
164 : { "way", SUMO_TAG_WAY },
165 : { "nd", SUMO_TAG_ND },
166 : { "tag", SUMO_TAG_TAG },
167 : { "relation", SUMO_TAG_RELATION },
168 : { "member", SUMO_TAG_MEMBER },
169 : // View
170 : { "viewsettings", SUMO_TAG_VIEWSETTINGS },
171 : { "view3D", SUMO_TAG_VIEWSETTINGS_3D },
172 : { "decal", SUMO_TAG_VIEWSETTINGS_DECAL },
173 : { "light", SUMO_TAG_VIEWSETTINGS_LIGHT },
174 : { "scheme", SUMO_TAG_VIEWSETTINGS_SCHEME },
175 : { "opengl", SUMO_TAG_VIEWSETTINGS_OPENGL },
176 : { "background", SUMO_TAG_VIEWSETTINGS_BACKGROUND },
177 : { "edges", SUMO_TAG_VIEWSETTINGS_EDGES },
178 : { "vehicles", SUMO_TAG_VIEWSETTINGS_VEHICLES },
179 : { "persons", SUMO_TAG_VIEWSETTINGS_PERSONS },
180 : { "containers", SUMO_TAG_VIEWSETTINGS_CONTAINERS },
181 : { "junctions", SUMO_TAG_VIEWSETTINGS_JUNCTIONS },
182 : { "additionals", SUMO_TAG_VIEWSETTINGS_ADDITIONALS },
183 : { "pois", SUMO_TAG_VIEWSETTINGS_POIS },
184 : { "polys", SUMO_TAG_VIEWSETTINGS_POLYS },
185 : { "legend", SUMO_TAG_VIEWSETTINGS_LEGEND },
186 : { "event", SUMO_TAG_VIEWSETTINGS_EVENT },
187 : { "jamTime", SUMO_TAG_VIEWSETTINGS_EVENT_JAM_TIME },
188 : { "include", SUMO_TAG_INCLUDE },
189 : { "delay", SUMO_TAG_DELAY },
190 : { "viewport", SUMO_TAG_VIEWPORT },
191 : { "snapshot", SUMO_TAG_SNAPSHOT },
192 : { "breakpoint", SUMO_TAG_BREAKPOINT },
193 : { "location", SUMO_TAG_LOCATION },
194 : { "colorScheme", SUMO_TAG_COLORSCHEME },
195 : { "scalingScheme", SUMO_TAG_SCALINGSCHEME },
196 : { "entry", SUMO_TAG_ENTRY },
197 : { "rngState", SUMO_TAG_RNGSTATE },
198 : { "rngLane", SUMO_TAG_RNGLANE },
199 : { "vehicleTransfer", SUMO_TAG_VEHICLETRANSFER },
200 : { "device", SUMO_TAG_DEVICE },
201 : // Cars
202 : { "carFollowing-IDM", SUMO_TAG_CF_IDM },
203 : { "carFollowing-IDMM", SUMO_TAG_CF_IDMM },
204 : { "carFollowing-Krauss", SUMO_TAG_CF_KRAUSS },
205 : { "carFollowing-KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
206 : { "carFollowing-KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
207 : { "carFollowing-KraussX", SUMO_TAG_CF_KRAUSSX },
208 : { "carFollowing-EIDM", SUMO_TAG_CF_EIDM },
209 : { "carFollowing-SmartSK", SUMO_TAG_CF_SMART_SK },
210 : { "carFollowing-Daniel1", SUMO_TAG_CF_DANIEL1 },
211 : { "carFollowing-PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
212 : { "carFollowing-BKerner", SUMO_TAG_CF_BKERNER },
213 : { "carFollowing-Wiedemann", SUMO_TAG_CF_WIEDEMANN },
214 : { "carFollowing-W99", SUMO_TAG_CF_W99 },
215 : { "carFollowing-Rail", SUMO_TAG_CF_RAIL },
216 : { "carFollowing-ACC", SUMO_TAG_CF_ACC },
217 : { "carFollowing-CACC", SUMO_TAG_CF_CACC },
218 : { "carFollowing-CC", SUMO_TAG_CF_CC },
219 : // Person
220 : { "person", SUMO_TAG_PERSON },
221 : { "personTrip", SUMO_TAG_PERSONTRIP },
222 : { "ride", SUMO_TAG_RIDE },
223 : { "walk", SUMO_TAG_WALK },
224 : { "personFlow", SUMO_TAG_PERSONFLOW },
225 : // Data (Netedit)
226 : { "dataSet", SUMO_TAG_DATASET },
227 : { "dataInterval", SUMO_TAG_DATAINTERVAL },
228 : // Transport
229 : { "container", SUMO_TAG_CONTAINER },
230 : { "transport", SUMO_TAG_TRANSPORT },
231 : { "tranship", SUMO_TAG_TRANSHIP },
232 : { "containerFlow", SUMO_TAG_CONTAINERFLOW },
233 : //Trajectories
234 : { "trajectories", SUMO_TAG_TRAJECTORIES },
235 : { "timestep", SUMO_TAG_TIMESTEP },
236 : { "timeSlice", SUMO_TAG_TIMESLICE },
237 : { "actorConfig", SUMO_TAG_ACTORCONFIG },
238 : { "motionState", SUMO_TAG_MOTIONSTATE },
239 : { "odPair", SUMO_TAG_OD_PAIR },
240 : { "transportables", SUMO_TAG_TRANSPORTABLES },
241 : // ActivityGen statistics file
242 : { "general", AGEN_TAG_GENERAL },
243 : { "street", AGEN_TAG_STREET },
244 : { "workHours", AGEN_TAG_WORKHOURS },
245 : { "opening", AGEN_TAG_OPENING },
246 : { "closing", AGEN_TAG_CLOSING },
247 : { "schools", AGEN_TAG_SCHOOLS },
248 : { "school", AGEN_TAG_SCHOOL },
249 : { "busStation", AGEN_TAG_BUSSTATION },
250 : { "busLine", AGEN_TAG_BUSLINE },
251 : { "stations", AGEN_TAG_STATIONS },
252 : { "revStations", AGEN_TAG_REV_STATIONS },
253 : { "station", AGEN_TAG_STATION },
254 : { "frequency", AGEN_TAG_FREQUENCY },
255 : { "population", AGEN_TAG_POPULATION },
256 : { "bracket", AGEN_TAG_BRACKET },
257 : { "cityGates", AGEN_TAG_CITYGATES },
258 : { "entrance", AGEN_TAG_ENTRANCE },
259 : { "parameters", AGEN_TAG_PARAM },
260 : // Netedit
261 : { "edgeData-edge", GNE_TAG_EDGEREL_SINGLE },
262 : { "internalLane", GNE_TAG_INTERNAL_LANE },
263 : { "poiLane", GNE_TAG_POILANE },
264 : { "poiGeo", GNE_TAG_POIGEO },
265 : { "jupedsim.walkable_area", GNE_TAG_JPS_WALKABLEAREA },
266 : { "jupedsim.obstacle", GNE_TAG_JPS_OBSTACLE },
267 : { "flowRoute", GNE_TAG_FLOW_ROUTE },
268 : { "flowWithRoute", GNE_TAG_FLOW_WITHROUTE },
269 : // GNE waypoints
270 : { "waypoint", GNE_TAG_WAYPOINT },
271 : { "waypointLane", GNE_TAG_WAYPOINT_LANE },
272 : { "waypointBusStop", GNE_TAG_WAYPOINT_BUSSTOP },
273 : { "waypointTrainStop", GNE_TAG_WAYPOINT_TRAINSTOP },
274 : { "waypointContainerStop", GNE_TAG_WAYPOINT_CONTAINERSTOP },
275 : { "waypointChargingStation", GNE_TAG_WAYPOINT_CHARGINGSTATION },
276 : { "waypointParkingArea", GNE_TAG_WAYPOINT_PARKINGAREA },
277 : // GNE Person trips
278 : { "personTrip: edge->edge", GNE_TAG_PERSONTRIP_EDGE_EDGE },
279 : { "personTrip: edge->taz", GNE_TAG_PERSONTRIP_EDGE_TAZ },
280 : { "personTrip: edge->junction", GNE_TAG_PERSONTRIP_EDGE_JUNCTION },
281 : { "personTrip: edge->busstop", GNE_TAG_PERSONTRIP_EDGE_BUSSTOP },
282 : { "personTrip: edge->trainstop", GNE_TAG_PERSONTRIP_EDGE_TRAINSTOP },
283 : { "personTrip: taz->edge", GNE_TAG_PERSONTRIP_TAZ_EDGE },
284 : { "personTrip: taz->taz", GNE_TAG_PERSONTRIP_TAZ_TAZ },
285 : { "personTrip: taz->junction", GNE_TAG_PERSONTRIP_TAZ_JUNCTION },
286 : { "personTrip: taz->busstop", GNE_TAG_PERSONTRIP_TAZ_BUSSTOP },
287 : { "personTrip: taz->trainstop", GNE_TAG_PERSONTRIP_TAZ_TRAINSTOP },
288 : { "personTrip: junction->edge", GNE_TAG_PERSONTRIP_JUNCTION_EDGE },
289 : { "personTrip: junction->taz", GNE_TAG_PERSONTRIP_JUNCTION_TAZ },
290 : { "personTrip: junction->junction", GNE_TAG_PERSONTRIP_JUNCTION_JUNCTION },
291 : { "personTrip: junction->busstop", GNE_TAG_PERSONTRIP_JUNCTION_BUSSTOP },
292 : { "personTrip: junction->trainstop", GNE_TAG_PERSONTRIP_JUNCTION_TRAINSTOP },
293 : { "personTrip: busstop->edge", GNE_TAG_PERSONTRIP_BUSSTOP_EDGE },
294 : { "personTrip: busstop->taz", GNE_TAG_PERSONTRIP_BUSSTOP_TAZ },
295 : { "personTrip: busstop->junction", GNE_TAG_PERSONTRIP_BUSSTOP_JUNCTION },
296 : { "personTrip: busstop->busstop", GNE_TAG_PERSONTRIP_BUSSTOP_BUSSTOP },
297 : { "personTrip: busstop->trainstop", GNE_TAG_PERSONTRIP_BUSSTOP_TRAINSTOP },
298 : { "personTrip: trainstop->edge", GNE_TAG_PERSONTRIP_TRAINSTOP_EDGE },
299 : { "personTrip: trainstop->taz", GNE_TAG_PERSONTRIP_TRAINSTOP_TAZ },
300 : { "personTrip: trainstop->junction", GNE_TAG_PERSONTRIP_TRAINSTOP_JUNCTION },
301 : { "personTrip: trainstop->busstop", GNE_TAG_PERSONTRIP_TRAINSTOP_BUSSTOP },
302 : { "personTrip: trainstop->trainstop", GNE_TAG_PERSONTRIP_TRAINSTOP_TRAINSTOP },
303 : // GNE Walks
304 : { "walk: edge->edge", GNE_TAG_WALK_EDGE_EDGE },
305 : { "walk: edge->taz", GNE_TAG_WALK_EDGE_TAZ },
306 : { "walk: edge->junction", GNE_TAG_WALK_EDGE_JUNCTION },
307 : { "walk: edge->busstop", GNE_TAG_WALK_EDGE_BUSSTOP },
308 : { "walk: edge->trainstop", GNE_TAG_WALK_EDGE_TRAINSTOP },
309 : { "walk: taz->edge", GNE_TAG_WALK_TAZ_EDGE },
310 : { "walk: taz->taz", GNE_TAG_WALK_TAZ_TAZ },
311 : { "walk: taz->junction", GNE_TAG_WALK_TAZ_JUNCTION },
312 : { "walk: taz->busstop", GNE_TAG_WALK_TAZ_BUSSTOP },
313 : { "walk: taz->trainstop", GNE_TAG_WALK_TAZ_TRAINSTOP },
314 : { "walk: junction->edge", GNE_TAG_WALK_JUNCTION_EDGE },
315 : { "walk: junction->taz", GNE_TAG_WALK_JUNCTION_TAZ },
316 : { "walk: junction->junction", GNE_TAG_WALK_JUNCTION_JUNCTION },
317 : { "walk: junction->busstop", GNE_TAG_WALK_JUNCTION_BUSSTOP },
318 : { "walk: junction->trainstop", GNE_TAG_WALK_JUNCTION_TRAINSTOP },
319 : { "walk: busstop->edge", GNE_TAG_WALK_BUSSTOP_EDGE },
320 : { "walk: busstop->taz", GNE_TAG_WALK_BUSSTOP_TAZ },
321 : { "walk: busstop->junction", GNE_TAG_WALK_BUSSTOP_JUNCTION },
322 : { "walk: busstop->busstop", GNE_TAG_WALK_BUSSTOP_BUSSTOP },
323 : { "walk: busstop->trainstop", GNE_TAG_WALK_BUSSTOP_TRAINSTOP },
324 : { "walk: trainstop->edge", GNE_TAG_WALK_TRAINSTOP_EDGE },
325 : { "walk: trainstop->taz", GNE_TAG_WALK_TRAINSTOP_TAZ },
326 : { "walk: trainstop->junction", GNE_TAG_WALK_TRAINSTOP_JUNCTION },
327 : { "walk: trainstop->busstop", GNE_TAG_WALK_TRAINSTOP_BUSSTOP },
328 : { "walk: trainstop->trainstop", GNE_TAG_WALK_TRAINSTOP_TRAINSTOP },
329 : { "walk: edges", GNE_TAG_WALK_EDGES },
330 : { "walk: route", GNE_TAG_WALK_ROUTE },
331 : // GNE Rides
332 : { "ride: edge->edge", GNE_TAG_RIDE_EDGE_EDGE },
333 : { "ride: edge->busstop", GNE_TAG_RIDE_EDGE_BUSSTOP },
334 : { "ride: edge->trainstop", GNE_TAG_RIDE_EDGE_TRAINSTOP },
335 : { "ride: busstop->edge", GNE_TAG_RIDE_BUSSTOP_EDGE },
336 : { "ride: busstop->busstop", GNE_TAG_RIDE_BUSSTOP_BUSSTOP },
337 : { "ride: busstop->trainstop", GNE_TAG_RIDE_BUSSTOP_TRAINSTOP },
338 : { "ride: trainstop->edge", GNE_TAG_RIDE_TRAINSTOP_EDGE },
339 : { "ride: trainstop->busstop", GNE_TAG_RIDE_TRAINSTOP_BUSSTOP },
340 : { "ride: trainstop->trainstop", GNE_TAG_RIDE_TRAINSTOP_TRAINSTOP },
341 : // GNE Person Stops
342 : { "stopPerson: busStop", GNE_TAG_STOPPERSON_BUSSTOP },
343 : { "stopPerson: trainStop", GNE_TAG_STOPPERSON_TRAINSTOP },
344 : { "stopPerson: edge", GNE_TAG_STOPPERSON_EDGE },
345 : // GNE Transports
346 : { "transport: edge->edge", GNE_TAG_TRANSPORT_EDGE_EDGE },
347 : { "transport: edge->containerStop", GNE_TAG_TRANSPORT_EDGE_CONTAINERSTOP },
348 : { "transport: containerStop->edge", GNE_TAG_TRANSPORT_CONTAINERSTOP_EDGE },
349 : { "transport: containerStop->containerStop", GNE_TAG_TRANSPORT_CONTAINERSTOP_CONTAINERSTOP },
350 : // GNE Tranships
351 : { "tranship: edge->edge", GNE_TAG_TRANSHIP_EDGE_EDGE },
352 : { "tranship: edge->containerStop", GNE_TAG_TRANSHIP_EDGE_CONTAINERSTOP },
353 : { "tranship: containerStop->edge", GNE_TAG_TRANSHIP_CONTAINERSTOP_EDGE },
354 : { "tranship: containerStop->containerStop", GNE_TAG_TRANSHIP_CONTAINERSTOP_CONTAINERSTOP },
355 : { "tranship: edges", GNE_TAG_TRANSHIP_EDGES },
356 : // GNE Container Stops
357 : { "stopContainer: containerStop", GNE_TAG_STOPCONTAINER_CONTAINERSTOP },
358 : { "stopContainer: edge", GNE_TAG_STOPCONTAINER_EDGE },
359 : // root file
360 : { "rootFile", SUMO_TAG_ROOTFILE },
361 : // Last element
362 : { "", SUMO_TAG_NOTHING } // -> must be the last one
363 : };
364 :
365 :
366 : StringBijection<int>::Entry SUMOXMLDefinitions::attrs[] = {
367 : // meta value for attribute enum
368 : { "default", SUMO_ATTR_DEFAULT },
369 : // meandata
370 : { "sampledSeconds", SUMO_ATTR_SAMPLEDSECONDS },
371 : { "density", SUMO_ATTR_DENSITY },
372 : { "laneDensity", SUMO_ATTR_LANEDENSITY },
373 : { "occupancy", SUMO_ATTR_OCCUPANCY },
374 : { "waitingTime", SUMO_ATTR_WAITINGTIME },
375 : { "timeLoss", SUMO_ATTR_TIMELOSS },
376 : { "speed", SUMO_ATTR_SPEED },
377 : { "speedRelative", SUMO_ATTR_SPEEDREL },
378 : { "departed", SUMO_ATTR_DEPARTED },
379 : { "arrived", SUMO_ATTR_ARRIVED },
380 : { "entered", SUMO_ATTR_ENTERED },
381 : { "left", SUMO_ATTR_LEFT },
382 : { "vaporized", SUMO_ATTR_VAPORIZED },
383 : { "teleported", SUMO_ATTR_TELEPORTED },
384 : { "traveltime", SUMO_ATTR_TRAVELTIME },
385 : { "laneChangedFrom", SUMO_ATTR_LANECHANGEDFROM },
386 : { "laneChangedTo", SUMO_ATTR_LANECHANGEDTO },
387 : { "overlapTraveltime", SUMO_ATTR_OVERLAPTRAVELTIME },
388 : { "CO_abs", SUMO_ATTR_CO_ABS },
389 : { "CO2_abs", SUMO_ATTR_CO2_ABS },
390 : { "HC_abs", SUMO_ATTR_HC_ABS },
391 : { "PMx_abs", SUMO_ATTR_PMX_ABS },
392 : { "NOx_abs", SUMO_ATTR_NOX_ABS },
393 : { "fuel_abs", SUMO_ATTR_FUEL_ABS },
394 : { "electricity_abs", SUMO_ATTR_ELECTRICITY_ABS },
395 : { "CO_normed", SUMO_ATTR_CO_NORMED },
396 : { "CO2_normed", SUMO_ATTR_CO2_NORMED },
397 : { "HC_normed", SUMO_ATTR_HC_NORMED },
398 : { "PMx_normed", SUMO_ATTR_PMX_NORMED },
399 : { "NOx_normed", SUMO_ATTR_NOX_NORMED },
400 : { "fuel_normed", SUMO_ATTR_FUEL_NORMED },
401 : { "electricity_normed", SUMO_ATTR_ELECTRICITY_NORMED },
402 : { "CO_perVeh", SUMO_ATTR_CO_PERVEH },
403 : { "CO2_perVeh", SUMO_ATTR_CO2_PERVEH },
404 : { "HC_perVeh", SUMO_ATTR_HC_PERVEH },
405 : { "PMx_perVeh", SUMO_ATTR_PMX_PERVEH },
406 : { "NOx_perVeh", SUMO_ATTR_NOX_PERVEH },
407 : { "fuel_perVeh", SUMO_ATTR_FUEL_PERVEH },
408 : { "electricity_perVeh", SUMO_ATTR_ELECTRICITY_PERVEH },
409 : { "noise", SUMO_ATTR_NOISE },
410 : { "amount", SUMO_ATTR_AMOUNT },
411 : { "averageSpeed", SUMO_ATTR_AVERAGESPEED },
412 : // FCD
413 : { "x", SUMO_ATTR_X },
414 : { "y", SUMO_ATTR_Y },
415 : { "z", SUMO_ATTR_Z },
416 : { "angle", SUMO_ATTR_ANGLE },
417 : { "type", SUMO_ATTR_TYPE },
418 : { "pos", SUMO_ATTR_POSITION },
419 : { "edge", SUMO_ATTR_EDGE },
420 : { "lane", SUMO_ATTR_LANE },
421 : { "slope", SUMO_ATTR_SLOPE },
422 : { "signals", SUMO_ATTR_SIGNALS },
423 : { "acceleration", SUMO_ATTR_ACCELERATION },
424 : { "accelerationLat", SUMO_ATTR_ACCELERATION_LAT },
425 : { "distance", SUMO_ATTR_DISTANCE },
426 : { "leaderID", SUMO_ATTR_LEADER_ID },
427 : { "leaderSpeed", SUMO_ATTR_LEADER_SPEED },
428 : { "leaderGap", SUMO_ATTR_LEADER_GAP },
429 : { "vehicle", SUMO_ATTR_VEHICLE },
430 : { "odometer", SUMO_ATTR_ODOMETER },
431 : { "posLat", SUMO_ATTR_POSITION_LAT },
432 : { "speedLat", SUMO_ATTR_SPEED_LAT },
433 : { "arrivalDelay", SUMO_ATTR_ARRIVALDELAY },
434 :
435 : // Edge
436 : { "id", SUMO_ATTR_ID },
437 : { "refId", SUMO_ATTR_REFID },
438 : { "name", SUMO_ATTR_NAME },
439 : { "version", SUMO_ATTR_VERSION },
440 : { "priority", SUMO_ATTR_PRIORITY },
441 : { "numLanes", SUMO_ATTR_NUMLANES },
442 : { "friction", SUMO_ATTR_FRICTION },
443 : { "oneway", SUMO_ATTR_ONEWAY },
444 : { "width", SUMO_ATTR_WIDTH },
445 : { "widthResolution", SUMO_ATTR_WIDTHRESOLUTION },
446 : { "maxWidth", SUMO_ATTR_MAXWIDTH },
447 : { "minWidth", SUMO_ATTR_MINWIDTH },
448 : { "sidewalkWidth", SUMO_ATTR_SIDEWALKWIDTH },
449 : { "bikeLaneWidth", SUMO_ATTR_BIKELANEWIDTH },
450 : { "remove", SUMO_ATTR_REMOVE },
451 : { "length", SUMO_ATTR_LENGTH },
452 : { "bidi", SUMO_ATTR_BIDI },
453 : // Split
454 : { "idBefore", SUMO_ATTR_ID_BEFORE },
455 : { "idAfter", SUMO_ATTR_ID_AFTER },
456 : // Positions
457 : { "center", SUMO_ATTR_CENTER },
458 : { "centerX", SUMO_ATTR_CENTER_X },
459 : { "centerY", SUMO_ATTR_CENTER_Y },
460 : { "centerZ", SUMO_ATTR_CENTER_Z },
461 :
462 : { "key", SUMO_ATTR_KEY },
463 : { "requestSize", SUMO_ATTR_REQUESTSIZE },
464 : { "request", SUMO_ATTR_REQUEST },
465 : { "response", SUMO_ATTR_RESPONSE },
466 : { "programID", SUMO_ATTR_PROGRAMID },
467 : { "phase", SUMO_ATTR_PHASE },
468 : { "offset", SUMO_ATTR_OFFSET },
469 : { "endOffset", SUMO_ATTR_ENDOFFSET },
470 : { "incLanes", SUMO_ATTR_INCLANES },
471 : { "intLanes", SUMO_ATTR_INTLANES },
472 :
473 : { "weight", SUMO_ATTR_WEIGHT },
474 : { "node", SUMO_ATTR_NODE },
475 : { "edges", SUMO_ATTR_EDGES },
476 : // Vehicle
477 : { "depart", SUMO_ATTR_DEPART },
478 : { "departLane", SUMO_ATTR_DEPARTLANE },
479 : { "departPos", SUMO_ATTR_DEPARTPOS },
480 : { "departPosLat", SUMO_ATTR_DEPARTPOS_LAT },
481 : { "departSpeed", SUMO_ATTR_DEPARTSPEED },
482 : { "departEdge", SUMO_ATTR_DEPARTEDGE },
483 : { "arrivalLane", SUMO_ATTR_ARRIVALLANE },
484 : { "arrivalPos", SUMO_ATTR_ARRIVALPOS },
485 : { "arrivalPosLat", SUMO_ATTR_ARRIVALPOS_LAT },
486 : { "arrivalSpeed", SUMO_ATTR_ARRIVALSPEED },
487 : { "arrivalEdge", SUMO_ATTR_ARRIVALEDGE },
488 : { "route", SUMO_ATTR_ROUTE },
489 : { "maxSpeed", SUMO_ATTR_MAXSPEED },
490 : { "desiredMaxSpeed", SUMO_ATTR_DESIRED_MAXSPEED },
491 : { "maxSpeedLat", SUMO_ATTR_MAXSPEED_LAT },
492 : { "latAlignment", SUMO_ATTR_LATALIGNMENT },
493 : { "minGapLat", SUMO_ATTR_MINGAP_LAT },
494 : { "accel", SUMO_ATTR_ACCEL },
495 : { "decel", SUMO_ATTR_DECEL },
496 : { "emergencyDecel", SUMO_ATTR_EMERGENCYDECEL },
497 : { "apparentDecel", SUMO_ATTR_APPARENTDECEL },
498 : { "actionStepLength", SUMO_ATTR_ACTIONSTEPLENGTH },
499 : { "vClass", SUMO_ATTR_VCLASS },
500 : { "vClasses", SUMO_ATTR_VCLASSES },
501 : { "exceptions", SUMO_ATTR_EXCEPTIONS },
502 : { "repno", SUMO_ATTR_REPNUMBER },
503 : { "speedFactor", SUMO_ATTR_SPEEDFACTOR },
504 : { "speedDev", SUMO_ATTR_SPEEDDEV },
505 : { "laneChangeModel", SUMO_ATTR_LANE_CHANGE_MODEL },
506 : { "carFollowModel", SUMO_ATTR_CAR_FOLLOW_MODEL },
507 : { "minGap", SUMO_ATTR_MINGAP },
508 : { "collisionMinGapFactor", SUMO_ATTR_COLLISION_MINGAP_FACTOR },
509 : { "boardingDuration", SUMO_ATTR_BOARDING_DURATION },
510 : { "loadingDuration", SUMO_ATTR_LOADING_DURATION },
511 : { "scale", SUMO_ATTR_SCALE },
512 : { "insertionChecks", SUMO_ATTR_INSERTIONCHECKS },
513 : { "timeToTeleport", SUMO_ATTR_TIME_TO_TELEPORT },
514 : { "timeToTeleportBidi", SUMO_ATTR_TIME_TO_TELEPORT_BIDI },
515 : { "speedFactorPremature", SUMO_ATTR_SPEEDFACTOR_PREMATURE },
516 : { "maneuverAngleTimes", SUMO_ATTR_MANEUVER_ANGLE_TIMES },
517 : { "parkingBadges", SUMO_ATTR_PARKING_BADGES },
518 : // MSDevice_ElecHybrid
519 : { "overheadWireChargingPower", SUMO_ATTR_OVERHEADWIRECHARGINGPOWER },
520 : // OverheadWire
521 : { "overheadWireSegment", SUMO_ATTR_OVERHEAD_WIRE_SEGMENT },
522 : { "segments", SUMO_ATTR_OVERHEAD_WIRE_SEGMENTS }, // <- deprecate
523 : { "voltage", SUMO_ATTR_VOLTAGE },
524 : { "voltageSource", SUMO_ATTR_VOLTAGESOURCE },
525 : { "currentLimit", SUMO_ATTR_CURRENTLIMIT },
526 : { "substationId", SUMO_ATTR_SUBSTATIONID },
527 : { "wireResistivity", SUMO_ATTR_OVERHEAD_WIRE_RESISTIVITY },
528 : { "forbiddenInnerLanes", SUMO_ATTR_OVERHEAD_WIRE_FORBIDDEN },
529 : { "clamps", SUMO_ATTR_OVERHEAD_WIRE_CLAMPS }, // <- deprecate
530 : { "idSegmentStartClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_START }, // <- deprecate
531 : { "idSegmentEndClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_END }, // <- deprecate
532 : { "wireClampStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_START },
533 : { "wireClampEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_END },
534 : { "wireClampLaneStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANESTART },
535 : { "wireClampLaneEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANEEND },
536 : // Charging Station
537 : { "power", SUMO_ATTR_CHARGINGPOWER },
538 : { "efficiency", SUMO_ATTR_EFFICIENCY },
539 : { "chargeInTransit", SUMO_ATTR_CHARGEINTRANSIT },
540 : { "chargeDelay", SUMO_ATTR_CHARGEDELAY},
541 : { "chargeType", SUMO_ATTR_CHARGETYPE},
542 : // MSDevice_Battery
543 : { "actualBatteryCapacity", SUMO_ATTR_ACTUALBATTERYCAPACITY },
544 : { "maximumBatteryCapacity", SUMO_ATTR_MAXIMUMBATTERYCAPACITY },
545 : { "maximumPower", SUMO_ATTR_MAXIMUMPOWER },
546 : { "vehicleMass", SUMO_ATTR_VEHICLEMASS },
547 : { "rotatingMass", SUMO_ATTR_ROTATINGMASS },
548 : { "frontSurfaceArea", SUMO_ATTR_FRONTSURFACEAREA },
549 : { "airDragCoefficient", SUMO_ATTR_AIRDRAGCOEFFICIENT },
550 : { "internalMomentOfInertia", SUMO_ATTR_INTERNALMOMENTOFINERTIA },
551 : { "radialDragCoefficient", SUMO_ATTR_RADIALDRAGCOEFFICIENT },
552 : { "rollDragCoefficient", SUMO_ATTR_ROLLDRAGCOEFFICIENT },
553 : { "constantPowerIntake", SUMO_ATTR_CONSTANTPOWERINTAKE },
554 : { "propulsionEfficiency", SUMO_ATTR_PROPULSIONEFFICIENCY },
555 : { "recuperationEfficiency", SUMO_ATTR_RECUPERATIONEFFICIENCY },
556 : { "recuperationEfficiencyByDecel", SUMO_ATTR_RECUPERATIONEFFICIENCY_BY_DECELERATION },
557 : { "stoppingTreshold", SUMO_ATTR_STOPPINGTHRESHOLD },
558 : // MSDevice_Tripinfo
559 : { "waitingCount", SUMO_ATTR_WAITINGCOUNT },
560 : { "stopTime", SUMO_ATTR_STOPTIME },
561 :
562 : // MSElecHybridExport
563 : { "overheadWireId", SUMO_ATTR_OVERHEADWIREID },
564 : { "tractionSubstationId", SUMO_ATTR_TRACTIONSUBSTATIONID },
565 : { "current", SUMO_ATTR_CURRENTFROMOVERHEADWIRE },
566 : { "circuitVoltage", SUMO_ATTR_VOLTAGEOFOVERHEADWIRE },
567 : { "alphaCircuitSolver", SUMO_ATTR_ALPHACIRCUITSOLVER },
568 : { "recuperationEnabled", SUMO_ATTR_RECUPERATIONENABLE },
569 : // MSBatteryExport
570 : { "energyConsumed", SUMO_ATTR_ENERGYCONSUMED },
571 : { "totalEnergyConsumed", SUMO_ATTR_TOTALENERGYCONSUMED },
572 : { "totalEnergyRegenerated", SUMO_ATTR_TOTALENERGYREGENERATED },
573 : { "chargingStationId", SUMO_ATTR_CHARGINGSTATIONID },
574 : { "energyCharged", SUMO_ATTR_ENERGYCHARGED },
575 : { "energyChargedInTransit", SUMO_ATTR_ENERGYCHARGEDINTRANSIT },
576 : { "energyChargedStopped", SUMO_ATTR_ENERGYCHARGEDSTOPPED },
577 : { "posOnLane", SUMO_ATTR_POSONLANE },
578 : { "timeStopped", SUMO_ATTR_TIMESTOPPED },
579 : // MMPEVEM
580 : { "wheelRadius", SUMO_ATTR_WHEELRADIUS },
581 : { "maximumTorque", SUMO_ATTR_MAXIMUMTORQUE },
582 : { "maximumSpeed", SUMO_ATTR_MAXIMUMSPEED },
583 : { "gearEfficiency", SUMO_ATTR_GEAREFFICIENCY },
584 : { "gearRatio", SUMO_ATTR_GEARRATIO },
585 : { "maximumRecuperationTorque", SUMO_ATTR_MAXIMUMRECUPERATIONTORQUE },
586 : { "maximumRecuperationPower", SUMO_ATTR_MAXIMUMRECUPERATIONPOWER },
587 : { "internalBatteryResistance", SUMO_ATTR_INTERNALBATTERYRESISTANCE },
588 : { "nominalBatteryVoltage", SUMO_ATTR_NOMINALBATTERYVOLTAGE },
589 : { "powerLossMap", SUMO_ATTR_POWERLOSSMAP },
590 : // ChargingStation output
591 : { "chargingStatus", SUMO_ATTR_CHARGING_STATUS },
592 : { "totalEnergyCharged", SUMO_ATTR_TOTALENERGYCHARGED },
593 : { "chargingSteps", SUMO_ATTR_CHARGINGSTEPS },
594 : { "totalEnergyChargedIntoVehicle", SUMO_ATTR_TOTALENERGYCHARGED_VEHICLE },
595 : { "chargingBegin", SUMO_ATTR_CHARGINGBEGIN },
596 : { "chargingEnd", SUMO_ATTR_CHARGINGEND },
597 : { "partialCharge", SUMO_ATTR_PARTIALCHARGE },
598 :
599 : // general emission / consumption
600 : { "shutOffStopDuration", SUMO_ATTR_SHUT_OFF_STOP },
601 : { "shutOffAutoDuration", SUMO_ATTR_SHUT_OFF_AUTO },
602 : { "loading", SUMO_ATTR_LOADING },
603 :
604 : /// @name carFollow model attributes
605 : { "sigma", SUMO_ATTR_SIGMA },
606 : { "sigmaStep", SUMO_ATTR_SIGMA_STEP },
607 : { "startupDelay", SUMO_ATTR_STARTUP_DELAY },
608 : { "tau", SUMO_ATTR_TAU },
609 : { "tmp1", SUMO_ATTR_TMP1 },
610 : { "tmp2", SUMO_ATTR_TMP2 },
611 : { "tmp3", SUMO_ATTR_TMP3 },
612 : { "tmp4", SUMO_ATTR_TMP4 },
613 : { "tmp5", SUMO_ATTR_TMP5 },
614 :
615 : { "vehdynamics", SUMO_ATTR_CF_EIDM_USEVEHDYNAMICS },
616 : { "tpreview", SUMO_ATTR_CF_EIDM_T_LOOK_AHEAD },
617 : { "tPersDrive", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_DRIVE },
618 : { "treaction", SUMO_ATTR_CF_EIDM_T_REACTION },
619 : { "tPersEstimate", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_ESTIMATE },
620 : { "ccoolness", SUMO_ATTR_CF_EIDM_C_COOLNESS },
621 : { "sigmaleader", SUMO_ATTR_CF_EIDM_SIG_LEADER },
622 : { "sigmagap", SUMO_ATTR_CF_EIDM_SIG_GAP },
623 : { "sigmaerror", SUMO_ATTR_CF_EIDM_SIG_ERROR },
624 : { "jerkmax", SUMO_ATTR_CF_EIDM_JERK_MAX },
625 : { "epsilonacc", SUMO_ATTR_CF_EIDM_EPSILON_ACC },
626 : { "taccmax", SUMO_ATTR_CF_EIDM_T_ACC_MAX },
627 : { "Mflatness", SUMO_ATTR_CF_EIDM_M_FLATNESS },
628 : { "Mbegin", SUMO_ATTR_CF_EIDM_M_BEGIN },
629 : { "maxvehpreview", SUMO_ATTR_CF_EIDM_MAX_VEH_PREVIEW },
630 :
631 : { "speedControlGain", SUMO_ATTR_SC_GAIN },
632 : { "gapClosingControlGainSpeed", SUMO_ATTR_GCC_GAIN_SPEED },
633 : { "gapClosingControlGainSpace", SUMO_ATTR_GCC_GAIN_SPACE },
634 : { "gapControlGainSpeed", SUMO_ATTR_GC_GAIN_SPEED },
635 : { "gapControlGainSpace", SUMO_ATTR_GC_GAIN_SPACE },
636 : { "collisionAvoidanceGainSpeed", SUMO_ATTR_CA_GAIN_SPEED },
637 : { "collisionAvoidanceGainSpace", SUMO_ATTR_CA_GAIN_SPACE },
638 : { "collisionAvoidanceOverride", SUMO_ATTR_CA_OVERRIDE },
639 :
640 : { "speedControlGainCACC", SUMO_ATTR_SC_GAIN_CACC },
641 : { "gapClosingControlGainGap", SUMO_ATTR_GCC_GAIN_GAP_CACC },
642 : { "gapClosingControlGainGapDot", SUMO_ATTR_GCC_GAIN_GAP_DOT_CACC },
643 : { "gapControlGainGap", SUMO_ATTR_GC_GAIN_GAP_CACC },
644 : { "gapControlGainGapDot", SUMO_ATTR_GC_GAIN_GAP_DOT_CACC },
645 : { "collisionAvoidanceGainGap", SUMO_ATTR_CA_GAIN_GAP_CACC },
646 : { "collisionAvoidanceGainGapDot", SUMO_ATTR_CA_GAIN_GAP_DOT_CACC },
647 : { "tauCACCToACC", SUMO_ATTR_HEADWAY_TIME_CACC_TO_ACC },
648 : { "speedControlMinGap", SUMO_ATTR_SC_MIN_GAP },
649 : { "applyDriverState", SUMO_ATTR_APPLYDRIVERSTATE },
650 :
651 : { "trainType", SUMO_ATTR_TRAIN_TYPE },
652 : { "speedTable", SUMO_ATTR_SPEED_TABLE },
653 : { "tractionTable", SUMO_ATTR_TRACTION_TABLE },
654 : { "resistanceTable", SUMO_ATTR_RESISTANCE_TABLE },
655 : { "massFactor", SUMO_ATTR_MASSFACTOR },
656 : { "maxPower", SUMO_ATTR_MAXPOWER },
657 : { "maxTraction", SUMO_ATTR_MAXTRACTION },
658 : { "resCoef_constant", SUMO_ATTR_RESISTANCE_COEFFICIENT_CONSTANT },
659 : { "resCoef_linear", SUMO_ATTR_RESISTANCE_COEFFICIENT_LINEAR },
660 : { "resCoef_quadratic", SUMO_ATTR_RESISTANCE_COEFFICIENT_QUADRATIC },
661 : /// @}
662 :
663 : /// @name Lane changing model attributes
664 : /// @{
665 : { "lcStrategic", SUMO_ATTR_LCA_STRATEGIC_PARAM },
666 : { "lcCooperative", SUMO_ATTR_LCA_COOPERATIVE_PARAM },
667 : { "lcSpeedGain", SUMO_ATTR_LCA_SPEEDGAIN_PARAM },
668 : { "lcKeepRight", SUMO_ATTR_LCA_KEEPRIGHT_PARAM },
669 : { "lcSublane", SUMO_ATTR_LCA_SUBLANE_PARAM },
670 : { "lcOpposite", SUMO_ATTR_LCA_OPPOSITE_PARAM },
671 : { "lcPushy", SUMO_ATTR_LCA_PUSHY },
672 : { "lcPushyGap", SUMO_ATTR_LCA_PUSHYGAP },
673 : { "lcAssertive", SUMO_ATTR_LCA_ASSERTIVE },
674 : { "lcImpatience", SUMO_ATTR_LCA_IMPATIENCE },
675 : { "lcTimeToImpatience", SUMO_ATTR_LCA_TIME_TO_IMPATIENCE },
676 : { "lcAccelLat", SUMO_ATTR_LCA_ACCEL_LAT },
677 : { "lcTurnAlignmentDistance", SUMO_ATTR_LCA_TURN_ALIGNMENT_DISTANCE },
678 : { "lcOvertakeRight", SUMO_ATTR_LCA_OVERTAKE_RIGHT },
679 : { "lcLookaheadLeft", SUMO_ATTR_LCA_LOOKAHEADLEFT },
680 : { "lcSpeedGainRight", SUMO_ATTR_LCA_SPEEDGAINRIGHT },
681 : { "lcSpeedGainLookahead", SUMO_ATTR_LCA_SPEEDGAIN_LOOKAHEAD },
682 : { "lcCooperativeRoundabout", SUMO_ATTR_LCA_COOPERATIVE_ROUNDABOUT },
683 : { "lcCooperativeSpeed", SUMO_ATTR_LCA_COOPERATIVE_SPEED },
684 : { "lcMaxSpeedLatStanding", SUMO_ATTR_LCA_MAXSPEEDLATSTANDING },
685 : { "lcMaxSpeedLatFactor", SUMO_ATTR_LCA_MAXSPEEDLATFACTOR },
686 : { "lcMaxDistLatStanding", SUMO_ATTR_LCA_MAXDISTLATSTANDING },
687 : { "lcLaneDiscipline", SUMO_ATTR_LCA_LANE_DISCIPLINE },
688 : { "lcSigma", SUMO_ATTR_LCA_SIGMA },
689 : { "lcKeepRightAcceptanceTime", SUMO_ATTR_LCA_KEEPRIGHT_ACCEPTANCE_TIME },
690 : { "lcOvertakeDeltaSpeedFactor", SUMO_ATTR_LCA_OVERTAKE_DELTASPEED_FACTOR },
691 : { "lcExperimental1", SUMO_ATTR_LCA_EXPERIMENTAL1 },
692 : /// @}
693 :
694 : /// @name junction model attributes
695 : /// @{
696 : { "jmCrossingGap", SUMO_ATTR_JM_CROSSING_GAP },
697 : { "jmDriveAfterYellowTime", SUMO_ATTR_JM_DRIVE_AFTER_YELLOW_TIME },
698 : { "jmDriveAfterRedTime", SUMO_ATTR_JM_DRIVE_AFTER_RED_TIME },
699 : { "jmDriveRedSpeed", SUMO_ATTR_JM_DRIVE_RED_SPEED },
700 : { "jmIgnoreKeepClearTime", SUMO_ATTR_JM_IGNORE_KEEPCLEAR_TIME },
701 : { "jmIgnoreFoeSpeed", SUMO_ATTR_JM_IGNORE_FOE_SPEED },
702 : { "jmIgnoreFoeProb", SUMO_ATTR_JM_IGNORE_FOE_PROB },
703 : { "jmIgnoreJunctionFoeProb", SUMO_ATTR_JM_IGNORE_JUNCTION_FOE_PROB },
704 : { "jmSigmaMinor", SUMO_ATTR_JM_SIGMA_MINOR },
705 : { "jmStoplineGap", SUMO_ATTR_JM_STOPLINE_GAP },
706 : { "jmTimegapMinor", SUMO_ATTR_JM_TIMEGAP_MINOR },
707 : { "junctionModel.ignoreIDs", SUMO_ATTR_JM_IGNORE_IDS },
708 : { "junctionModel.ignoreTypes", SUMO_ATTR_JM_IGNORE_TYPES },
709 : { "carFollowModel.ignoreIDs", SUMO_ATTR_CF_IGNORE_IDS },
710 : { "carFollowModel.ignoreTypes", SUMO_ATTR_CF_IGNORE_TYPES },
711 : /// @}
712 : { "flexArrival", SUMO_ATTR_FLEX_ARRIVAL },
713 :
714 : { "last", SUMO_ATTR_LAST },
715 : { "cost", SUMO_ATTR_COST },
716 : { "costs", SUMO_ATTR_COSTS },
717 : { "savings", SUMO_ATTR_SAVINGS },
718 : { "exitTimes", SUMO_ATTR_EXITTIMES },
719 : { "probability", SUMO_ATTR_PROB },
720 : { "replacedAtTime", SUMO_ATTR_REPLACED_AT_TIME },
721 : { "replacedOnIndex", SUMO_ATTR_REPLACED_ON_INDEX },
722 : { "count", SUMO_ATTR_COUNT },
723 : { "probabilities", SUMO_ATTR_PROBS },
724 : { "routes", SUMO_ATTR_ROUTES },
725 : { "vTypes", SUMO_ATTR_VTYPES },
726 : { "nextEdges", SUMO_ATTR_NEXT_EDGES },
727 : { "deterministic", SUMO_ATTR_DETERMINISTIC },
728 :
729 : { "lanes", SUMO_ATTR_LANES },
730 : { "from", SUMO_ATTR_FROM },
731 : { "to", SUMO_ATTR_TO },
732 : { "fromLonLat", SUMO_ATTR_FROMLONLAT },
733 : { "toLonLat", SUMO_ATTR_TOLONLAT },
734 : { "fromXY", SUMO_ATTR_FROMXY },
735 : { "toXY", SUMO_ATTR_TOXY },
736 : { "fromJunction", SUMO_ATTR_FROM_JUNCTION },
737 : { "toJunction", SUMO_ATTR_TO_JUNCTION },
738 : { "period", SUMO_ATTR_PERIOD },
739 : { "repeat", SUMO_ATTR_REPEAT },
740 : { "cycleTime", SUMO_ATTR_CYCLETIME },
741 : { "fromTaz", SUMO_ATTR_FROM_TAZ },
742 : { "toTaz", SUMO_ATTR_TO_TAZ },
743 : { "reroute", SUMO_ATTR_REROUTE },
744 : { "personCapacity", SUMO_ATTR_PERSON_CAPACITY },
745 : { "containerCapacity", SUMO_ATTR_CONTAINER_CAPACITY },
746 : { "parkingLength", SUMO_ATTR_PARKING_LENGTH },
747 : { "personNumber", SUMO_ATTR_PERSON_NUMBER },
748 : { "containerNumber", SUMO_ATTR_CONTAINER_NUMBER },
749 : { "modes", SUMO_ATTR_MODES },
750 : { "walkFactor", SUMO_ATTR_WALKFACTOR },
751 :
752 : { "function", SUMO_ATTR_FUNCTION },
753 : { "freq", SUMO_ATTR_FREQUENCY },
754 : { "style", SUMO_ATTR_STYLE },
755 : { "file", SUMO_ATTR_FILE },
756 : { "junction", SUMO_ATTR_JUNCTION },
757 : { "number", SUMO_ATTR_NUMBER },
758 : { "duration", SUMO_ATTR_DURATION },
759 : { "until", SUMO_ATTR_UNTIL },
760 : { "arrival", SUMO_ATTR_ARRIVAL },
761 : { "extension", SUMO_ATTR_EXTENSION },
762 : { "started", SUMO_ATTR_STARTED },
763 : { "ended", SUMO_ATTR_ENDED },
764 : { "routeProbe", SUMO_ATTR_ROUTEPROBE },
765 : { "crossingEdges", SUMO_ATTR_CROSSING_EDGES },
766 : // Traffic light & Nodes
767 : { "time", SUMO_ATTR_TIME },
768 : { "begin", SUMO_ATTR_BEGIN },
769 : { "end", SUMO_ATTR_END },
770 : { "tl", SUMO_ATTR_TLID },
771 : { "tlType", SUMO_ATTR_TLTYPE },
772 : { "tlLayout", SUMO_ATTR_TLLAYOUT },
773 : { "linkIndex", SUMO_ATTR_TLLINKINDEX },
774 : { "linkIndex2", SUMO_ATTR_TLLINKINDEX2 },
775 : { "shape", SUMO_ATTR_SHAPE },
776 : { "outlineShape", SUMO_ATTR_OUTLINESHAPE },
777 : { "spreadType", SUMO_ATTR_SPREADTYPE },
778 : { "radius", SUMO_ATTR_RADIUS },
779 : { "customShape", SUMO_ATTR_CUSTOMSHAPE },
780 : { "keepClear", SUMO_ATTR_KEEP_CLEAR },
781 : { "indirect", SUMO_ATTR_INDIRECT },
782 : { "rightOfWay", SUMO_ATTR_RIGHT_OF_WAY },
783 : { "fringe", SUMO_ATTR_FRINGE },
784 : { "color", SUMO_ATTR_COLOR },
785 : { "dir", SUMO_ATTR_DIR },
786 : { "state", SUMO_ATTR_STATE },
787 : { "lcState", SUMO_ATTR_LCSTATE },
788 : { "icon", SUMO_ATTR_ICON },
789 : { "layer", SUMO_ATTR_LAYER },
790 : { "fill", SUMO_ATTR_FILL },
791 : { "lineWidth", SUMO_ATTR_LINEWIDTH },
792 : { "prefix", SUMO_ATTR_PREFIX },
793 : { "discard", SUMO_ATTR_DISCARD },
794 :
795 : { "fromLane", SUMO_ATTR_FROM_LANE },
796 : { "toLane", SUMO_ATTR_TO_LANE },
797 : { "dest", SUMO_ATTR_DEST },
798 : { "source", SUMO_ATTR_SOURCE },
799 : { "via", SUMO_ATTR_VIA },
800 : { "viaLonLat", SUMO_ATTR_VIALONLAT },
801 : { "viaXY", SUMO_ATTR_VIAXY },
802 : { "viaJunctions", SUMO_ATTR_VIAJUNCTIONS },
803 : { "nodes", SUMO_ATTR_NODES },
804 : { "visibility", SUMO_ATTR_VISIBILITY_DISTANCE },
805 :
806 : { "minDur", SUMO_ATTR_MINDURATION },
807 : { "maxDur", SUMO_ATTR_MAXDURATION },
808 : { "earliestEnd", SUMO_ATTR_EARLIEST_END },
809 : { "latestEnd", SUMO_ATTR_LATEST_END },
810 : { "earlyTarget", SUMO_ATTR_EARLY_TARGET },
811 : { "finalTarget", SUMO_ATTR_FINAL_TARGET },
812 : { "check", SUMO_ATTR_CHECK },
813 : { "nArgs", SUMO_ATTR_NARGS },
814 : { "vehext", SUMO_ATTR_VEHICLEEXTENSION },
815 : { "yellow", SUMO_ATTR_YELLOW },
816 : { "red", SUMO_ATTR_RED },
817 : { "next", SUMO_ATTR_NEXT },
818 : { "foes", SUMO_ATTR_FOES },
819 : { "constraints", SUMO_ATTR_CONSTRAINTS },
820 : { "detectors", SUMO_ATTR_DETECTORS },
821 : { "conditions", SUMO_ATTR_CONDITIONS },
822 : { "saveDetectors", SUMO_ATTR_SAVE_DETECTORS },
823 : { "saveConditions", SUMO_ATTR_SAVE_CONDITIONS },
824 :
825 : // E2 detector
826 : { "cont", SUMO_ATTR_CONT },
827 : { "contPos", SUMO_ATTR_CONTPOS },
828 : { "timeThreshold", SUMO_ATTR_HALTING_TIME_THRESHOLD },
829 : { "speedThreshold", SUMO_ATTR_HALTING_SPEED_THRESHOLD },
830 : { "jamThreshold", SUMO_ATTR_JAM_DIST_THRESHOLD },
831 : { "show", SUMO_ATTR_SHOW_DETECTOR },
832 : // E3 detector
833 : { "openEntry", SUMO_ATTR_OPEN_ENTRY },
834 : { "expectArrival", SUMO_ATTR_EXPECT_ARRIVAL },
835 :
836 : { "wautID", SUMO_ATTR_WAUT_ID },
837 : { "junctionID", SUMO_ATTR_JUNCTION_ID },
838 : { "procedure", SUMO_ATTR_PROCEDURE },
839 : { "synchron", SUMO_ATTR_SYNCHRON },
840 : { "refTime", SUMO_ATTR_REF_TIME },
841 : { "startProg", SUMO_ATTR_START_PROG },
842 : { "off", SUMO_ATTR_OFF },
843 : { "friendlyPos", SUMO_ATTR_FRIENDLY_POS },
844 : { "splitByType", SUMO_ATTR_SPLIT_VTYPE },
845 : { "uncontrolled", SUMO_ATTR_UNCONTROLLED },
846 : { "pass", SUMO_ATTR_PASS },
847 : { "busStop", SUMO_ATTR_BUS_STOP },
848 : { "trainStop", SUMO_ATTR_TRAIN_STOP },
849 : { "containerStop", SUMO_ATTR_CONTAINER_STOP },
850 : { "parkingArea", SUMO_ATTR_PARKING_AREA },
851 : { "roadsideCapacity", SUMO_ATTR_ROADSIDE_CAPACITY },
852 : { "acceptedBadges", SUMO_ATTR_ACCEPTED_BADGES },
853 : { "onRoad", SUMO_ATTR_ONROAD },
854 : { "chargingStation", SUMO_ATTR_CHARGING_STATION },
855 : { "group", SUMO_ATTR_GROUP },
856 : { "line", SUMO_ATTR_LINE },
857 : { "lines", SUMO_ATTR_LINES },
858 : { "tripId", SUMO_ATTR_TRIP_ID },
859 : { "split", SUMO_ATTR_SPLIT },
860 : { "join", SUMO_ATTR_JOIN },
861 : { "intended", SUMO_ATTR_INTENDED },
862 : { "onDemand", SUMO_ATTR_ONDEMAND },
863 : { "jump", SUMO_ATTR_JUMP },
864 : { "usedEnded", SUMO_ATTR_USED_ENDED },
865 : { "collision", SUMO_ATTR_COLLISION },
866 : { "value", SUMO_ATTR_VALUE },
867 : { "prohibitor", SUMO_ATTR_PROHIBITOR },
868 : { "prohibited", SUMO_ATTR_PROHIBITED },
869 : { "allow", SUMO_ATTR_ALLOW },
870 : { "disallow", SUMO_ATTR_DISALLOW },
871 : { "prefer", SUMO_ATTR_PREFER },
872 : { "changeLeft", SUMO_ATTR_CHANGE_LEFT },
873 : { "changeRight", SUMO_ATTR_CHANGE_RIGHT },
874 : { "controlledInner", SUMO_ATTR_CONTROLLED_INNER },
875 : { "vehsPerHour", SUMO_ATTR_VEHSPERHOUR },
876 : { "personsPerHour", SUMO_ATTR_PERSONSPERHOUR },
877 : { "containersPerHour", SUMO_ATTR_CONTAINERSPERHOUR },
878 : { "perHour", SUMO_ATTR_PERHOUR },
879 : { "done", SUMO_ATTR_DONE },
880 : { "output", SUMO_ATTR_OUTPUT },
881 : { "height", SUMO_ATTR_HEIGHT },
882 : { "guiShape", SUMO_ATTR_GUISHAPE },
883 : { "osgFile", SUMO_ATTR_OSGFILE },
884 : { "imgFile", SUMO_ATTR_IMGFILE },
885 : { "relativePath", SUMO_ATTR_RELATIVEPATH },
886 : { "emissionClass", SUMO_ATTR_EMISSIONCLASS },
887 : { "mass", SUMO_ATTR_MASS },
888 : { "impatience", SUMO_ATTR_IMPATIENCE },
889 : { "startPos", SUMO_ATTR_STARTPOS },
890 : { "endPos", SUMO_ATTR_ENDPOS },
891 : { "triggered", SUMO_ATTR_TRIGGERED },
892 : { "containerTriggered", SUMO_ATTR_CONTAINER_TRIGGERED },
893 : { "parking", SUMO_ATTR_PARKING },
894 : { "expected", SUMO_ATTR_EXPECTED },
895 : { "permitted", SUMO_ATTR_PERMITTED },
896 : { "expectedContainers", SUMO_ATTR_EXPECTED_CONTAINERS },
897 : { "index", SUMO_ATTR_INDEX },
898 :
899 : { "entering", SUMO_ATTR_ENTERING },
900 : { "excludeEmpty", SUMO_ATTR_EXCLUDE_EMPTY },
901 : { "withInternal", SUMO_ATTR_WITH_INTERNAL },
902 : { "trackVehicles", SUMO_ATTR_TRACK_VEHICLES },
903 : { "detectPersons", SUMO_ATTR_DETECT_PERSONS },
904 : { "maxTraveltime", SUMO_ATTR_MAX_TRAVELTIME },
905 : { "minSamples", SUMO_ATTR_MIN_SAMPLES },
906 : { "writeAttributes", SUMO_ATTR_WRITE_ATTRIBUTES },
907 : { "edgesFile", SUMO_ATTR_EDGESFILE },
908 : { "aggregate", SUMO_ATTR_AGGREGATE },
909 : { "numEdges", SUMO_ATTR_NUMEDGES },
910 :
911 : { "lon", SUMO_ATTR_LON },
912 : { "lat", SUMO_ATTR_LAT },
913 : { "action", SUMO_ATTR_ACTION },
914 : { "geo", SUMO_ATTR_GEO },
915 : { "geoShape", SUMO_ATTR_GEOSHAPE },
916 : { "k", SUMO_ATTR_K },
917 : { "v", SUMO_ATTR_V },
918 : { "ref", SUMO_ATTR_REF },
919 : { "href", SUMO_ATTR_HREF },
920 : { "zoom", SUMO_ATTR_ZOOM },
921 : { "interpolated", SUMO_ATTR_INTERPOLATED },
922 : { "threshold", SUMO_ATTR_THRESHOLD },
923 :
924 : { "netOffset", SUMO_ATTR_NET_OFFSET },
925 : { "convBoundary", SUMO_ATTR_CONV_BOUNDARY },
926 : { "origBoundary", SUMO_ATTR_ORIG_BOUNDARY },
927 : { "projParameter", SUMO_ATTR_ORIG_PROJ },
928 :
929 : { "tauLast", SUMO_ATTR_CF_PWAGNER2009_TAULAST },
930 : { "apProb", SUMO_ATTR_CF_PWAGNER2009_APPROB },
931 : { "delta", SUMO_ATTR_CF_IDM_DELTA },
932 : { "stepping", SUMO_ATTR_CF_IDM_STEPPING },
933 : { "adaptFactor", SUMO_ATTR_CF_IDMM_ADAPT_FACTOR },
934 : { "adaptTime", SUMO_ATTR_CF_IDMM_ADAPT_TIME },
935 : { "phi", SUMO_ATTR_CF_KERNER_PHI },
936 :
937 : { "security", SUMO_ATTR_CF_WIEDEMANN_SECURITY },
938 : { "estimation", SUMO_ATTR_CF_WIEDEMANN_ESTIMATION },
939 : { "cc1", SUMO_ATTR_CF_W99_CC1 },
940 : { "cc2", SUMO_ATTR_CF_W99_CC2 },
941 : { "cc3", SUMO_ATTR_CF_W99_CC3 },
942 : { "cc4", SUMO_ATTR_CF_W99_CC4 },
943 : { "cc5", SUMO_ATTR_CF_W99_CC5 },
944 : { "cc6", SUMO_ATTR_CF_W99_CC6 },
945 : { "cc7", SUMO_ATTR_CF_W99_CC7 },
946 : { "cc8", SUMO_ATTR_CF_W99_CC8 },
947 : { "cc9", SUMO_ATTR_CF_W99_CC9 },
948 :
949 : { "ccDecel", SUMO_ATTR_CF_CC_CCDECEL },
950 : { "constSpacing", SUMO_ATTR_CF_CC_CONSTSPACING },
951 : { "kp", SUMO_ATTR_CF_CC_KP },
952 : { "lambda", SUMO_ATTR_CF_CC_LAMBDA },
953 : { "c1", SUMO_ATTR_CF_CC_C1 },
954 : { "xi", SUMO_ATTR_CF_CC_XI },
955 : { "omegaN", SUMO_ATTR_CF_CC_OMEGAN },
956 : { "tauEngine", SUMO_ATTR_CF_CC_TAU },
957 : { "lanesCount", SUMO_ATTR_CF_CC_LANES_COUNT },
958 : { "ccAccel", SUMO_ATTR_CF_CC_CCACCEL },
959 : { "ploegKp", SUMO_ATTR_CF_CC_PLOEG_KP },
960 : { "ploegKd", SUMO_ATTR_CF_CC_PLOEG_KD },
961 : { "ploegH", SUMO_ATTR_CF_CC_PLOEG_H },
962 : { "flatbedKa", SUMO_ATTR_CF_CC_FLATBED_KA },
963 : { "flatbedKv", SUMO_ATTR_CF_CC_FLATBED_KV },
964 : { "flatbedKp", SUMO_ATTR_CF_CC_FLATBED_KP },
965 : { "flatbedD", SUMO_ATTR_CF_CC_FLATBED_D },
966 : { "flatbedH", SUMO_ATTR_CF_CC_FLATBED_H },
967 :
968 : { "generateWalks", SUMO_ATTR_GENERATE_WALKS },
969 : { "actType", SUMO_ATTR_ACTTYPE },
970 : { "junctionCornerDetail", SUMO_ATTR_CORNERDETAIL },
971 : { "junctionLinkDetail", SUMO_ATTR_LINKDETAIL },
972 : { "rectangularLaneCut", SUMO_ATTR_RECTANGULAR_LANE_CUT },
973 : { "walkingareas", SUMO_ATTR_WALKINGAREAS },
974 : { "lefthand", SUMO_ATTR_LEFTHAND },
975 : { "limitTurnSpeed", SUMO_ATTR_LIMIT_TURN_SPEED },
976 : { "checkLaneFoesAll", SUMO_ATTR_CHECKLANEFOES_ALL },
977 : { "checkLaneFoesRoundabout", SUMO_ATTR_CHECKLANEFOES_ROUNDABOUT },
978 : { "tlsIgnoreInternalJunctionJam", SUMO_ATTR_TLS_IGNORE_INTERNAL_JUNCTION_JAM },
979 : { "avoidOverlap", SUMO_ATTR_AVOID_OVERLAP },
980 : { "junctionHigherSpeed", SUMO_ATTR_HIGHER_SPEED },
981 : { "internalJunctionsVehicleWidth", SUMO_ATTR_INTERNAL_JUNCTIONS_VEHICLE_WIDTH },
982 : { "junctionsMinimalShape", SUMO_ATTR_JUNCTIONS_MINIMAL_SHAPE },
983 : { "junctionsEndpointShape", SUMO_ATTR_JUNCTIONS_ENDPOINT_SHAPE },
984 :
985 : { "actorConfig", SUMO_ATTR_ACTORCONFIG },
986 : { "startTime", SUMO_ATTR_STARTTIME },
987 : { "vehicleClass", SUMO_ATTR_VEHICLECLASS },
988 : { "fuel", SUMO_ATTR_FUEL },
989 : { "origin", SUMO_ATTR_ORIGIN },
990 : { "destination", SUMO_ATTR_DESTINATION },
991 : { "visible", SUMO_ATTR_VISIBLE },
992 : { "limit", SUMO_ATTR_LIMIT },
993 : { "active", SUMO_ATTR_ACTIVE },
994 : { "arrivalTime", SUMO_ATTR_ARRIVALTIME },
995 : { "arrivalTimeBraking", SUMO_ATTR_ARRIVALTIMEBRAKING },
996 : { "arrivalSpeedBraking", SUMO_ATTR_ARRIVALSPEEDBRAKING },
997 : { "optional", SUMO_ATTR_OPTIONAL },
998 :
999 : #ifndef WIN32
1000 : { "commandPosix", SUMO_ATTR_COMMAND },
1001 : #else
1002 : { "commandWindows", SUMO_ATTR_COMMAND },
1003 : #endif
1004 :
1005 : // ActivityGen statistics file
1006 : { "inhabitants", AGEN_ATTR_INHABITANTS },
1007 : { "households", AGEN_ATTR_HOUSEHOLDS },
1008 : { "childrenAgeLimit", AGEN_ATTR_CHILDREN },
1009 : { "retirementAgeLimit", AGEN_ATTR_RETIREMENT },
1010 : { "carRate", AGEN_ATTR_CARS },
1011 : { "unemploymentRate", AGEN_ATTR_UNEMPLOYEMENT },
1012 : { "laborDemand", AGEN_ATTR_LABORDEMAND },
1013 : { "footDistanceLimit", AGEN_ATTR_MAX_FOOT_DIST },
1014 : { "incomingTraffic", AGEN_ATTR_IN_TRAFFIC },
1015 : { "incoming", AGEN_ATTR_INCOMING },
1016 : { "outgoingTraffic", AGEN_ATTR_OUT_TRAFFIC },
1017 : { "outgoing", AGEN_ATTR_OUTGOING },
1018 : { "population", AGEN_ATTR_POPULATION },
1019 : { "workPosition", AGEN_ATTR_OUT_WORKPOSITION },
1020 : { "hour", AGEN_ATTR_HOUR },
1021 : { "proportion", AGEN_ATTR_PROP },
1022 : { "capacity", AGEN_ATTR_CAPACITY },
1023 : { "opening", AGEN_ATTR_OPENING },
1024 : { "closing", AGEN_ATTR_CLOSING },
1025 : { "maxTripDuration", AGEN_ATTR_MAX_TRIP_DURATION },
1026 : { "rate", AGEN_ATTR_RATE },
1027 : { "beginAge", AGEN_ATTR_BEGINAGE },
1028 : { "endAge", AGEN_ATTR_ENDAGE },
1029 : { "peopleNbr", AGEN_ATTR_PEOPLENBR },
1030 : { "carPreference", AGEN_ATTR_CARPREF },
1031 : { "meanTimePerKmInCity", AGEN_ATTR_CITYSPEED },
1032 : { "freeTimeActivityRate", AGEN_ATTR_FREETIMERATE },
1033 : { "uniformRandomTraffic", AGEN_ATTR_UNI_RAND_TRAFFIC },
1034 : { "departureVariation", AGEN_ATTR_DEP_VARIATION },
1035 :
1036 : // SUMOConfig files
1037 : { "config-file", SUMO_ATTR_CONFIGFILE },
1038 : { "net-file", SUMO_ATTR_NETFILE },
1039 : { "additional-files", SUMO_ATTR_ADDITIONALFILES },
1040 : { "route-files", SUMO_ATTR_ROUTEFILES },
1041 : { "data-files", SUMO_ATTR_DATAFILES },
1042 : { "meandata-files", SUMO_ATTR_MEANDATAFILES },
1043 :
1044 : // Netedit attributes
1045 : { "selected", GNE_ATTR_SELECTED },
1046 : { "modificationStatusNotForPrinting", GNE_ATTR_MODIFICATION_STATUS },
1047 : { "shapeStart", GNE_ATTR_SHAPE_START },
1048 : { "shapeEnd", GNE_ATTR_SHAPE_END },
1049 : { "isBidi", GNE_ATTR_BIDIR },
1050 : { "closedShape", GNE_ATTR_CLOSE_SHAPE },
1051 : { "parentItem", GNE_ATTR_PARENT },
1052 : { "dataSet", GNE_ATTR_DATASET },
1053 : { "genericParameter", GNE_ATTR_PARAMETERS },
1054 : { "flowParameter", GNE_ATTR_FLOWPARAMETERS },
1055 : { "defaultVTypeModified", GNE_ATTR_DEFAULT_VTYPE_MODIFIED },
1056 : { "centerAfterCreation", GNE_ATTR_CENTER_AFTER_CREATION },
1057 : { "opposite", GNE_ATTR_OPPOSITE },
1058 : { "shiftLaneIndex", GNE_ATTR_SHIFTLANEINDEX },
1059 : { "stopOffset", GNE_ATTR_STOPOFFSET },
1060 : { "stopOException", GNE_ATTR_STOPOEXCEPTION },
1061 : { "routeDist.", GNE_ATTR_ROUTE_DISTRIBUTION },
1062 : { "typeDist.", GNE_ATTR_VTYPE_DISTRIBUTION },
1063 : { "poisson", GNE_ATTR_POISSON },
1064 : { "stopIndex", GNE_ATTR_STOPINDEX },
1065 : { "pathStopIndex", GNE_ATTR_PATHSTOPINDEX },
1066 : { "additionalChildren", GNE_ATTR_ADDITIONALCHILDREN },
1067 : { "planGeometryStartPos", GNE_ATTR_PLAN_GEOMETRY_STARTPOS },
1068 : { "planGeometryEndPos", GNE_ATTR_PLAN_GEOMETRY_ENDPOS },
1069 : { "fromLaneID", GNE_ATTR_FROM_LANEID },
1070 : { "toLaneID", GNE_ATTR_TO_LANEID },
1071 : // mapped to additioanl elements on writing
1072 : { "fromBusStop", GNE_ATTR_FROM_BUSSTOP },
1073 : { "fromTrainStop", GNE_ATTR_FROM_TRAINSTOP },
1074 : { "fromContainerStop", GNE_ATTR_FROM_CONTAINERSTOP },
1075 :
1076 : { "carriageLength", SUMO_ATTR_CARRIAGE_LENGTH },
1077 : { "locomotiveLength", SUMO_ATTR_LOCOMOTIVE_LENGTH },
1078 : { "carriageGap", SUMO_ATTR_CARRIAGE_GAP },
1079 : { "carriageDoors", SUMO_ATTR_CARRIAGE_DOORS },
1080 :
1081 : { "targetLanes", SUMO_ATTR_TARGETLANE },
1082 : { "crossing", SUMO_ATTR_CROSSING },
1083 :
1084 : { "xmlns:xsi", SUMO_ATTR_XMLNS },
1085 : { "xsi:noNamespaceSchemaLocation", SUMO_ATTR_SCHEMA_LOCATION },
1086 :
1087 : //@name RNG state saving attributes
1088 : // @{
1089 : { "routeHandler", SUMO_ATTR_RNG_ROUTEHANDLER },
1090 : { "insertionControl", SUMO_ATTR_RNG_INSERTIONCONTROL },
1091 : { "device", SUMO_ATTR_RNG_DEVICE },
1092 : { "device.btreceiver", SUMO_ATTR_RNG_DEVICE_BT },
1093 : { "device.toc", SUMO_ATTR_RNG_DEVICE_TOC },
1094 : { "driverState", SUMO_ATTR_RNG_DRIVERSTATE },
1095 : // @}
1096 :
1097 : //@name meso edge type attributes
1098 : // @{
1099 : { "tauff", SUMO_ATTR_MESO_TAUFF },
1100 : { "taufj", SUMO_ATTR_MESO_TAUFJ },
1101 : { "taujf", SUMO_ATTR_MESO_TAUJF },
1102 : { "taujj", SUMO_ATTR_MESO_TAUJJ },
1103 : { "junctionControl", SUMO_ATTR_MESO_JUNCTION_CONTROL },
1104 : { "tlsPenalty", SUMO_ATTR_MESO_TLS_PENALTY },
1105 : { "tlsFlowPenalty", SUMO_ATTR_MESO_TLS_FLOW_PENALTY },
1106 : { "minorPenalty", SUMO_ATTR_MESO_MINOR_PENALTY },
1107 : { "overtaking", SUMO_ATTR_MESO_OVERTAKING },
1108 : // @}
1109 :
1110 : // Other
1111 : { "", SUMO_ATTR_NOTHING } //< must be the last one
1112 : };
1113 :
1114 :
1115 : const std::string SUMO_PARAM_ORIGID("origId");
1116 :
1117 :
1118 : StringBijection<SumoXMLNodeType>::Entry SUMOXMLDefinitions::sumoNodeTypeValues[] = {
1119 : {"traffic_light", SumoXMLNodeType::TRAFFIC_LIGHT},
1120 : {"traffic_light_unregulated", SumoXMLNodeType::TRAFFIC_LIGHT_NOJUNCTION},
1121 : {"traffic_light_right_on_red", SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED},
1122 : {"rail_signal", SumoXMLNodeType::RAIL_SIGNAL},
1123 : {"rail_crossing", SumoXMLNodeType::RAIL_CROSSING},
1124 : {"priority", SumoXMLNodeType::PRIORITY},
1125 : {"priority_stop", SumoXMLNodeType::PRIORITY_STOP},
1126 : {"right_before_left", SumoXMLNodeType::RIGHT_BEFORE_LEFT},
1127 : {"left_before_right", SumoXMLNodeType::LEFT_BEFORE_RIGHT},
1128 : {"allway_stop", SumoXMLNodeType::ALLWAY_STOP},
1129 : {"zipper", SumoXMLNodeType::ZIPPER},
1130 : {"district", SumoXMLNodeType::DISTRICT},
1131 : {"unregulated", SumoXMLNodeType::NOJUNCTION},
1132 : {"internal", SumoXMLNodeType::INTERNAL},
1133 : {"dead_end", SumoXMLNodeType::DEAD_END},
1134 : {"DEAD_END", SumoXMLNodeType::DEAD_END_DEPRECATED},
1135 : {"unknown", SumoXMLNodeType::UNKNOWN} //< must be the last one
1136 : };
1137 :
1138 :
1139 : StringBijection<SumoXMLEdgeFunc>::Entry SUMOXMLDefinitions::sumoEdgeFuncValues[] = {
1140 : {"unknown", SumoXMLEdgeFunc::UNKNOWN},
1141 : {"normal", SumoXMLEdgeFunc::NORMAL},
1142 : {"connector", SumoXMLEdgeFunc::CONNECTOR},
1143 : {"crossing", SumoXMLEdgeFunc::CROSSING},
1144 : {"walkingarea", SumoXMLEdgeFunc::WALKINGAREA},
1145 : {"internal", SumoXMLEdgeFunc::INTERNAL} //< must be the last one
1146 : };
1147 :
1148 :
1149 : StringBijection<LaneSpreadFunction>::Entry SUMOXMLDefinitions::laneSpreadFunctionValues[] = {
1150 : {"right", LaneSpreadFunction::RIGHT }, // default: geometry is left edge border, lanes flare to the right
1151 : {"roadCenter", LaneSpreadFunction::ROADCENTER }, // geometry is center of the bidirectional road
1152 : {"center", LaneSpreadFunction::CENTER } // geometry is center of the edge (must be the last one)
1153 : };
1154 :
1155 : StringBijection<ParkingType>::Entry SUMOXMLDefinitions::parkingTypeValues[] = {
1156 : {"0", ParkingType::ONROAD }, // default: park on the street
1157 : {"1", ParkingType::OFFROAD }, // parking off the street
1158 : {"opportunistic", ParkingType::OPPORTUNISTIC } // park of the street if there is an opportunity for it
1159 : };
1160 :
1161 : StringBijection<RightOfWay>::Entry SUMOXMLDefinitions::rightOfWayValuesInitializer[] = {
1162 : {"edgePriority", RightOfWay::EDGEPRIORITY }, // use only edge priority values
1163 : {"mixedPriority", RightOfWay::MIXEDPRIORITY }, // use the default behavior but encode this explicitly (only needed for overriding the NEMA fallback behavior)
1164 : {"allwayStop", RightOfWay::ALLWAYSTOP }, // only used for setting the fall-back behavior of TLS-off
1165 : {"default", RightOfWay::DEFAULT } // default (must be the last one)
1166 : };
1167 :
1168 : StringBijection<FringeType>::Entry SUMOXMLDefinitions::fringeTypeValuesInitializer[] = {
1169 : {"outer", FringeType::OUTER },
1170 : {"inner", FringeType::INNER },
1171 : {"default", FringeType::DEFAULT } // default (must be the last one)
1172 : };
1173 :
1174 : StringBijection<PersonMode>::Entry SUMOXMLDefinitions::personModeValuesInitializer[] = {
1175 : {"none", PersonMode::NONE},
1176 : {"walkForward", PersonMode::WALK_FORWARD},
1177 : {"walkBackward", PersonMode::WALK_BACKWARD},
1178 : {"walk", PersonMode::WALK},
1179 : {"bicycle", PersonMode::BICYCLE },
1180 : {"car", PersonMode::CAR },
1181 : {"taxi", PersonMode::TAXI },
1182 : {"public", PersonMode::PUBLIC} // (must be the last one)
1183 : };
1184 :
1185 : StringBijection<LinkState>::Entry SUMOXMLDefinitions::linkStateValues[] = {
1186 : { "G", LINKSTATE_TL_GREEN_MAJOR },
1187 : { "g", LINKSTATE_TL_GREEN_MINOR },
1188 : { "r", LINKSTATE_TL_RED },
1189 : { "u", LINKSTATE_TL_REDYELLOW },
1190 : { "Y", LINKSTATE_TL_YELLOW_MAJOR },
1191 : { "y", LINKSTATE_TL_YELLOW_MINOR },
1192 : { "o", LINKSTATE_TL_OFF_BLINKING },
1193 : { "O", LINKSTATE_TL_OFF_NOSIGNAL },
1194 : { "M", LINKSTATE_MAJOR },
1195 : { "m", LINKSTATE_MINOR },
1196 : { "=", LINKSTATE_EQUAL },
1197 : { "s", LINKSTATE_STOP },
1198 : { "w", LINKSTATE_ALLWAY_STOP },
1199 : { "Z", LINKSTATE_ZIPPER },
1200 : { "-", LINKSTATE_DEADEND } //< must be the last one
1201 : };
1202 :
1203 : const char SUMOXMLDefinitions::AllowedTLS_linkStatesInitializer[] = {
1204 : LINKSTATE_TL_GREEN_MAJOR,
1205 : LINKSTATE_TL_GREEN_MINOR,
1206 : LINKSTATE_STOP, // used for SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED
1207 : LINKSTATE_TL_RED,
1208 : LINKSTATE_TL_REDYELLOW,
1209 : LINKSTATE_TL_YELLOW_MAJOR,
1210 : LINKSTATE_TL_YELLOW_MINOR,
1211 : LINKSTATE_TL_OFF_BLINKING,
1212 : LINKSTATE_TL_OFF_NOSIGNAL
1213 : };
1214 : const std::string SUMOXMLDefinitions::ALLOWED_TLS_LINKSTATES(AllowedTLS_linkStatesInitializer, 9);
1215 :
1216 : StringBijection<LinkDirection>::Entry SUMOXMLDefinitions::linkDirectionValues[] = {
1217 : { "s", LinkDirection::STRAIGHT },
1218 : { "t", LinkDirection::TURN },
1219 : { "T", LinkDirection::TURN_LEFTHAND },
1220 : { "l", LinkDirection::LEFT },
1221 : { "r", LinkDirection::RIGHT },
1222 : { "L", LinkDirection::PARTLEFT },
1223 : { "R", LinkDirection::PARTRIGHT },
1224 : { "invalid", LinkDirection::NODIR } //< must be the last one
1225 : };
1226 :
1227 :
1228 : StringBijection<TrafficLightType>::Entry SUMOXMLDefinitions::trafficLightTypesValues[] = {
1229 : { "static", TrafficLightType::STATIC },
1230 : { "railSignal", TrafficLightType::RAIL_SIGNAL },
1231 : { "railCrossing", TrafficLightType::RAIL_CROSSING },
1232 : { "actuated", TrafficLightType::ACTUATED },
1233 : { "NEMA", TrafficLightType::NEMA },
1234 : { "delay_based", TrafficLightType::DELAYBASED },
1235 : { "sotl_phase", TrafficLightType::SOTL_PHASE },
1236 : { "sotl_platoon", TrafficLightType::SOTL_PLATOON },
1237 : { "sotl_request", TrafficLightType::SOTL_REQUEST },
1238 : { "sotl_wave", TrafficLightType::SOTL_WAVE },
1239 : { "sotl_marching", TrafficLightType::SOTL_MARCHING },
1240 : { "swarm", TrafficLightType::SWARM_BASED },
1241 : { "deterministic", TrafficLightType::HILVL_DETERMINISTIC },
1242 : { "off", TrafficLightType::OFF },
1243 : { "<invalid>", TrafficLightType::INVALID } //< must be the last one
1244 : };
1245 :
1246 :
1247 : StringBijection<TrafficLightLayout>::Entry SUMOXMLDefinitions::trafficLightLayoutValues[] = {
1248 : { "opposites", TrafficLightLayout::OPPOSITES },
1249 : { "incoming", TrafficLightLayout::INCOMING },
1250 : { "alternateOneWay", TrafficLightLayout::ALTERNATE_ONEWAY },
1251 : { "default", TrafficLightLayout::DEFAULT } //< must be the last one
1252 : };
1253 :
1254 : StringBijection<InsertionCheck>::Entry SUMOXMLDefinitions::insertionCheckValues[] = {
1255 : { "none", InsertionCheck::NONE },
1256 : { "collision", InsertionCheck::COLLISION },
1257 : { "leaderGap", InsertionCheck::LEADER_GAP },
1258 : { "followerGap", InsertionCheck::FOLLOWER_GAP },
1259 : { "junction", InsertionCheck::JUNCTION },
1260 : { "stop", InsertionCheck::STOP },
1261 : { "arrivalSpeed", InsertionCheck::ARRIVAL_SPEED },
1262 : { "oncomingTrain", InsertionCheck::ONCOMING_TRAIN },
1263 : { "speedLimit", InsertionCheck::SPEED_LIMIT },
1264 : { "pedestrian", InsertionCheck::PEDESTRIAN },
1265 : { "bidi", InsertionCheck::BIDI },
1266 : { "laneChange", InsertionCheck::LANECHANGE },
1267 : { "all", InsertionCheck::ALL } //< must be the last one
1268 : };
1269 :
1270 : StringBijection<LaneChangeModel>::Entry SUMOXMLDefinitions::laneChangeModelValues[] = {
1271 : { "DK2008", LaneChangeModel::DK2008 },
1272 : { "LC2013", LaneChangeModel::LC2013 },
1273 : { "LC2013_CC", LaneChangeModel::LC2013_CC },
1274 : { "SL2015", LaneChangeModel::SL2015 },
1275 : { "default", LaneChangeModel::DEFAULT } //< must be the last one
1276 : };
1277 :
1278 : StringBijection<SumoXMLTag>::Entry SUMOXMLDefinitions::carFollowModelValues[] = {
1279 : { "IDM", SUMO_TAG_CF_IDM },
1280 : { "IDMM", SUMO_TAG_CF_IDMM },
1281 : { "Krauss", SUMO_TAG_CF_KRAUSS },
1282 : { "KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
1283 : { "KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
1284 : { "KraussX", SUMO_TAG_CF_KRAUSSX }, // experimental extensions to the Krauss model
1285 : { "EIDM", SUMO_TAG_CF_EIDM },
1286 : { "SmartSK", SUMO_TAG_CF_SMART_SK },
1287 : { "Daniel1", SUMO_TAG_CF_DANIEL1 },
1288 : { "PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
1289 : { "BKerner", SUMO_TAG_CF_BKERNER },
1290 : { "Rail", SUMO_TAG_CF_RAIL },
1291 : { "CC", SUMO_TAG_CF_CC },
1292 : { "ACC", SUMO_TAG_CF_ACC },
1293 : { "CACC", SUMO_TAG_CF_CACC },
1294 : { "W99", SUMO_TAG_CF_W99 },
1295 : { "Wiedemann", SUMO_TAG_CF_WIEDEMANN } //< must be the last one
1296 : };
1297 :
1298 : StringBijection<LaneChangeAction>::Entry SUMOXMLDefinitions::laneChangeActionValues[] = {
1299 : { "stay", LCA_STAY },
1300 : { "left", LCA_LEFT },
1301 : { "right", LCA_RIGHT },
1302 : { "strategic", LCA_STRATEGIC },
1303 : { "cooperative", LCA_COOPERATIVE },
1304 : { "speedGain", LCA_SPEEDGAIN },
1305 : { "keepRight", LCA_KEEPRIGHT },
1306 : { "sublane", LCA_SUBLANE },
1307 : { "traci", LCA_TRACI },
1308 : { "urgent", LCA_URGENT },
1309 : { "overlapping", LCA_OVERLAPPING },
1310 : { "blocked", LCA_BLOCKED },
1311 : { "amBL", LCA_AMBLOCKINGLEADER },
1312 : { "amBF", LCA_AMBLOCKINGFOLLOWER },
1313 : { "amBB", LCA_AMBACKBLOCKER },
1314 : { "amBBS", LCA_AMBACKBLOCKER_STANDING },
1315 : { "MR", LCA_MRIGHT },
1316 : { "ML", LCA_MLEFT },
1317 :
1318 : { "unknown", LCA_UNKNOWN } //< must be the last one
1319 : };
1320 :
1321 : StringBijection<TrainType>::Entry SUMOXMLDefinitions::trainTypeValues[] = {
1322 : { "custom", TrainType::CUSTOM },
1323 : { "NGT400", TrainType::NGT400 },
1324 : { "NGT400_16", TrainType::NGT400_16 },
1325 : { "RB425", TrainType::RB425 },
1326 : { "RB628", TrainType::RB628 },
1327 : { "ICE1", TrainType::ICE1 },
1328 : { "REDosto7", TrainType::REDOSTO7 },
1329 : { "Freight", TrainType::FREIGHT },
1330 : { "ICE3", TrainType::ICE3 },
1331 : { "MireoPlusB", TrainType::MIREOPLUSB },
1332 : { "MireoPlusH", TrainType::MIREOPLUSH }
1333 : };
1334 :
1335 : StringBijection<POIIcon>::Entry SUMOXMLDefinitions::POIIconValues[] = {
1336 : {"pin", POIIcon::PIN},
1337 : {"tree", POIIcon::NATURE},
1338 : {"hotel", POIIcon::HOTEL},
1339 : {"fuel", POIIcon::FUEL},
1340 : {"charging_station", POIIcon::CHARGING_STATION},
1341 : {"", POIIcon::NONE} //< must be the last one
1342 : };
1343 :
1344 : StringBijection<int> SUMOXMLDefinitions::Tags(
1345 : SUMOXMLDefinitions::tags, SUMO_TAG_NOTHING);
1346 :
1347 : StringBijection<int> SUMOXMLDefinitions::Attrs(
1348 : SUMOXMLDefinitions::attrs, SUMO_ATTR_NOTHING);
1349 :
1350 : StringBijection<SumoXMLNodeType> SUMOXMLDefinitions::NodeTypes(
1351 : SUMOXMLDefinitions::sumoNodeTypeValues, SumoXMLNodeType::UNKNOWN);
1352 :
1353 : StringBijection<SumoXMLEdgeFunc> SUMOXMLDefinitions::EdgeFunctions(
1354 : SUMOXMLDefinitions::sumoEdgeFuncValues, SumoXMLEdgeFunc::INTERNAL);
1355 :
1356 : StringBijection<LaneSpreadFunction> SUMOXMLDefinitions::LaneSpreadFunctions(
1357 : SUMOXMLDefinitions::laneSpreadFunctionValues, LaneSpreadFunction::CENTER);
1358 :
1359 : StringBijection<ParkingType> SUMOXMLDefinitions::ParkingTypes(
1360 : SUMOXMLDefinitions::parkingTypeValues, ParkingType::OPPORTUNISTIC);
1361 :
1362 : StringBijection<RightOfWay> SUMOXMLDefinitions::RightOfWayValues(
1363 : SUMOXMLDefinitions::rightOfWayValuesInitializer, RightOfWay::DEFAULT);
1364 :
1365 : StringBijection<FringeType> SUMOXMLDefinitions::FringeTypeValues(
1366 : SUMOXMLDefinitions::fringeTypeValuesInitializer, FringeType::DEFAULT);
1367 :
1368 : StringBijection<PersonMode> SUMOXMLDefinitions::PersonModeValues(
1369 : SUMOXMLDefinitions::personModeValuesInitializer, PersonMode::PUBLIC);
1370 :
1371 : StringBijection<LinkState> SUMOXMLDefinitions::LinkStates(
1372 : SUMOXMLDefinitions::linkStateValues, LINKSTATE_DEADEND);
1373 :
1374 : StringBijection<LinkDirection> SUMOXMLDefinitions::LinkDirections(
1375 : SUMOXMLDefinitions::linkDirectionValues, LinkDirection::NODIR);
1376 :
1377 : StringBijection<TrafficLightType> SUMOXMLDefinitions::TrafficLightTypes(
1378 : SUMOXMLDefinitions::trafficLightTypesValues, TrafficLightType::INVALID);
1379 :
1380 : StringBijection<TrafficLightLayout> SUMOXMLDefinitions::TrafficLightLayouts(
1381 : SUMOXMLDefinitions::trafficLightLayoutValues, TrafficLightLayout::DEFAULT);
1382 :
1383 : StringBijection<InsertionCheck> SUMOXMLDefinitions::InsertionChecks(
1384 : SUMOXMLDefinitions::insertionCheckValues, InsertionCheck::ALL);
1385 :
1386 : StringBijection<LaneChangeModel> SUMOXMLDefinitions::LaneChangeModels(
1387 : SUMOXMLDefinitions::laneChangeModelValues, LaneChangeModel::DEFAULT);
1388 :
1389 : StringBijection<SumoXMLTag> SUMOXMLDefinitions::CarFollowModels(
1390 : SUMOXMLDefinitions::carFollowModelValues, SUMO_TAG_CF_WIEDEMANN);
1391 :
1392 : StringBijection<LaneChangeAction> SUMOXMLDefinitions::LaneChangeActions(
1393 : SUMOXMLDefinitions::laneChangeActionValues, LCA_UNKNOWN);
1394 :
1395 : StringBijection<TrainType> SUMOXMLDefinitions::TrainTypes(
1396 : SUMOXMLDefinitions::trainTypeValues, TrainType::MIREOPLUSH);
1397 :
1398 : StringBijection<POIIcon> SUMOXMLDefinitions::POIIcons(
1399 : SUMOXMLDefinitions::POIIconValues, POIIcon::NONE, false);
1400 :
1401 :
1402 : std::string
1403 1044964 : SUMOXMLDefinitions::getJunctionIDFromInternalEdge(const std::string internalEdge) {
1404 : assert(internalEdge[0] == ':');
1405 1044964 : return internalEdge.substr(1, internalEdge.rfind('_') - 1);
1406 : }
1407 :
1408 :
1409 : std::string
1410 16950846 : SUMOXMLDefinitions::getEdgeIDFromLane(const std::string laneID) {
1411 16950846 : return laneID.substr(0, laneID.rfind('_'));
1412 : }
1413 :
1414 : int
1415 17644 : SUMOXMLDefinitions::getIndexFromLane(const std::string laneID) {
1416 35288 : return StringUtils::toInt(laneID.substr(laneID.rfind('_') + 1));
1417 : }
1418 :
1419 :
1420 : bool
1421 242326 : SUMOXMLDefinitions::isValidNetID(const std::string& value) {
1422 484652 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos && value[0] != ':';
1423 : }
1424 :
1425 :
1426 : bool
1427 790788 : SUMOXMLDefinitions::isValidVehicleID(const std::string& value) {
1428 1581568 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1429 : }
1430 :
1431 :
1432 : bool
1433 18386 : SUMOXMLDefinitions::isValidTypeID(const std::string& value) {
1434 36772 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1435 : }
1436 :
1437 : bool
1438 0 : SUMOXMLDefinitions::isValidAdditionalID(const std::string& value) {
1439 0 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1440 : }
1441 :
1442 : bool
1443 0 : SUMOXMLDefinitions::isValidDetectorID(const std::string& value) {
1444 : // special case: ' ' allowed
1445 0 : return (value.size() > 0) && value.find_first_of("\t\n\r|\\'\";,<>&") == std::string::npos;
1446 : }
1447 :
1448 : bool
1449 1428 : SUMOXMLDefinitions::isValidAttribute(const std::string& value) {
1450 1428 : return value.find_first_of("\t\n\r&|\\'\"<>") == std::string::npos;
1451 : }
1452 :
1453 :
1454 : bool
1455 0 : SUMOXMLDefinitions::isValidFilename(const std::string& value) {
1456 0 : return (value.find_first_of("\t\n\r@$%^&|{}*'\";<>") == std::string::npos);
1457 : }
1458 :
1459 :
1460 : bool
1461 0 : SUMOXMLDefinitions::isValidListOfNetIDs(const std::string& value) {
1462 0 : const std::vector<std::string>& typeIDs = StringTokenizer(value).getVector();
1463 0 : if (typeIDs.empty()) {
1464 : return false;
1465 : } else {
1466 : // check that gives IDs are valid
1467 0 : for (auto i : typeIDs) {
1468 0 : if (!SUMOXMLDefinitions::isValidNetID(i)) {
1469 : return false;
1470 : }
1471 : }
1472 0 : return true;
1473 : }
1474 0 : }
1475 :
1476 :
1477 : bool
1478 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::string& value) {
1479 0 : return isValidListOfTypeID(StringTokenizer(value).getVector());
1480 : }
1481 :
1482 :
1483 : bool
1484 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::vector<std::string>& typeIDs) {
1485 0 : if (typeIDs.empty()) {
1486 : return false;
1487 : } else {
1488 : // check that gives IDs are valid
1489 0 : for (const auto& typeID : typeIDs) {
1490 0 : if (!SUMOXMLDefinitions::isValidTypeID(typeID)) {
1491 : return false;
1492 : }
1493 : }
1494 : return true;
1495 : }
1496 : }
1497 :
1498 :
1499 : bool
1500 1428 : SUMOXMLDefinitions::isValidParameterKey(const std::string& value) {
1501 : // Generic parameters keys cannot be empty
1502 1428 : if (value.empty()) {
1503 : return false;
1504 : } else {
1505 1428 : return isValidAttribute(value);
1506 : }
1507 : }
1508 :
1509 : /****************************************************************************/
|