Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2002-2025 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 <algorithm>
28 : #include <cassert>
29 : #include <utils/common/StringTokenizer.h>
30 : #include <utils/common/StringUtils.h>
31 :
32 : #include "SUMOXMLDefinitions.h"
33 :
34 : // ===========================================================================
35 : // definitions
36 : // ===========================================================================
37 :
38 : SequentialStringBijection::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 : { "preference", SUMO_TAG_PREFERENCE },
49 : { "meso", SUMO_TAG_MESO },
50 : { "busStop", SUMO_TAG_BUS_STOP },
51 : { "trainStop", SUMO_TAG_TRAIN_STOP },
52 : { "ptLine", SUMO_TAG_PT_LINE },
53 : { "access", SUMO_TAG_ACCESS },
54 : { "containerStop", SUMO_TAG_CONTAINER_STOP },
55 : { "chargingStation", SUMO_TAG_CHARGING_STATION },
56 : { "chargingEvent", SUMO_TAG_CHARGING_EVENT },
57 : { "parkingArea", SUMO_TAG_PARKING_AREA },
58 : { "space", SUMO_TAG_PARKING_SPACE },
59 : { "e1Detector", SUMO_TAG_E1DETECTOR },
60 : { "inductionLoop", SUMO_TAG_INDUCTION_LOOP },
61 : { "e2Detector", SUMO_TAG_E2DETECTOR },
62 : { "laneAreaDetector", SUMO_TAG_LANE_AREA_DETECTOR },
63 : { "multiLaneAreaDetector", GNE_TAG_MULTI_LANE_AREA_DETECTOR },
64 : { "e3Detector", SUMO_TAG_E3DETECTOR },
65 : { "entryExitDetector", SUMO_TAG_ENTRY_EXIT_DETECTOR },
66 : { "detEntry", SUMO_TAG_DET_ENTRY },
67 : { "detExit", SUMO_TAG_DET_EXIT },
68 : { "edgeData", SUMO_TAG_MEANDATA_EDGE },
69 : { "laneData", SUMO_TAG_MEANDATA_LANE },
70 : { "edgeFollowDetector", SUMO_TAG_EDGEFOLLOWDETECTOR },
71 : { "instantInductionLoop", SUMO_TAG_INSTANT_INDUCTION_LOOP },
72 : { "routeProbe", SUMO_TAG_ROUTEPROBE },
73 : { "calibrator", SUMO_TAG_CALIBRATOR },
74 : { "calibratorLane", GNE_TAG_CALIBRATOR_LANE },
75 : { "calibratorFlow", GNE_TAG_CALIBRATOR_FLOW },
76 : { "rerouter", SUMO_TAG_REROUTER },
77 : { "rerouterSymbol", GNE_TAG_REROUTER_SYMBOL },
78 : { "interval", SUMO_TAG_INTERVAL },
79 : { "destProbReroute", SUMO_TAG_DEST_PROB_REROUTE },
80 : { "closingReroute", SUMO_TAG_CLOSING_REROUTE },
81 : { "closingLaneReroute", SUMO_TAG_CLOSING_LANE_REROUTE },
82 : { "routeProbReroute", SUMO_TAG_ROUTE_PROB_REROUTE },
83 : { "parkingAreaReroute", SUMO_TAG_PARKING_AREA_REROUTE },
84 : { "viaProbReroute", SUMO_TAG_VIA_PROB_REROUTE },
85 : { "overtakingReroute", SUMO_TAG_OVERTAKING_REROUTE },
86 : { "stationReroute", SUMO_TAG_STATION_REROUTE },
87 : { "step", SUMO_TAG_STEP },
88 : { "variableSpeedSign", SUMO_TAG_VSS },
89 : { "variableSpeedSignSymbol", GNE_TAG_VSS_SYMBOL },
90 : { "vaporizer", SUMO_TAG_VAPORIZER },
91 : { "tractionSubstation", SUMO_TAG_TRACTION_SUBSTATION },
92 : { "overheadWireSegment", SUMO_TAG_OVERHEAD_WIRE_SEGMENT }, // <- Deprecate
93 : { "overheadWire", SUMO_TAG_OVERHEAD_WIRE_SECTION },
94 : { "overheadWireClamp", SUMO_TAG_OVERHEAD_WIRE_CLAMP },
95 : { "vTypeProbe", SUMO_TAG_VTYPEPROBE },
96 : { "routes", SUMO_TAG_ROUTES },
97 : { "trip", SUMO_TAG_TRIP },
98 : { "tripJunctions", GNE_TAG_TRIP_JUNCTIONS },
99 : { "tripTAZs", GNE_TAG_TRIP_TAZS },
100 : { "vehicle", SUMO_TAG_VEHICLE },
101 : { "vehicleWithRoute", GNE_TAG_VEHICLE_WITHROUTE },
102 : { "flow", SUMO_TAG_FLOW },
103 : { "flowJunctions", GNE_TAG_FLOW_JUNCTIONS },
104 : { "flowTAZs", GNE_TAG_FLOW_TAZS },
105 : { "flowState", SUMO_TAG_FLOWSTATE },
106 : { "vType", SUMO_TAG_VTYPE },
107 : { "vTypeRef", GNE_TAG_VTYPEREF },
108 : { "route", SUMO_TAG_ROUTE },
109 : { "routeRef", GNE_TAG_ROUTEREF },
110 : { "routeEmbedded", GNE_TAG_ROUTE_EMBEDDED },
111 : { "request", SUMO_TAG_REQUEST },
112 : { "source", SUMO_TAG_SOURCE },
113 : { "taz", SUMO_TAG_TAZ },
114 : { "tazSource", SUMO_TAG_TAZSOURCE },
115 : { "tazSink", SUMO_TAG_TAZSINK },
116 : { "trafficLight", SUMO_TAG_TRAFFIC_LIGHT },
117 : { "tlLogic", SUMO_TAG_TLLOGIC },
118 : { "phase", SUMO_TAG_PHASE },
119 : { "condition", SUMO_TAG_CONDITION },
120 : { "assignment", SUMO_TAG_ASSIGNMENT },
121 : { "function", SUMO_TAG_FUNCTION },
122 : { "edgeControl", SUMO_TAG_EDGECONTROL },
123 : { "routingEngine", SUMO_TAG_ROUTINGENGINE },
124 :
125 : { "edgeRelation", SUMO_TAG_EDGEREL },
126 : { "tazRelation", SUMO_TAG_TAZREL },
127 : { "timedEvent", SUMO_TAG_TIMEDEVENT },
128 : { "fromEdge", SUMO_TAG_FROMEDGE },
129 : { "toEdge", SUMO_TAG_TOEDGE },
130 : { "sink", SUMO_TAG_SINK },
131 : { "param", SUMO_TAG_PARAM },
132 : { "WAUT", SUMO_TAG_WAUT },
133 : { "wautSwitch", SUMO_TAG_WAUT_SWITCH },
134 : { "wautJunction", SUMO_TAG_WAUT_JUNCTION },
135 : { "segment", SUMO_TAG_SEGMENT },
136 : { "delete", SUMO_TAG_DEL },
137 : { "connections", SUMO_TAG_CONNECTIONS },
138 : { "stop", SUMO_TAG_STOP },
139 : { "stopBusStop", GNE_TAG_STOP_BUSSTOP },
140 : { "stopTrainStop", GNE_TAG_STOP_TRAINSTOP },
141 : { "stopContainerStop", GNE_TAG_STOP_CONTAINERSTOP },
142 : { "stopChargingStation", GNE_TAG_STOP_CHARGINGSTATION },
143 : { "stopParkingArea", GNE_TAG_STOP_PARKINGAREA },
144 : { "stopLane", GNE_TAG_STOP_LANE },
145 : { "polygonType", SUMO_TAG_POLYTYPE },
146 : { "connection", SUMO_TAG_CONNECTION },
147 : { "conflict", SUMO_TAG_CONFLICT },
148 : { "prohibition", SUMO_TAG_PROHIBITION },
149 : { "split", SUMO_TAG_SPLIT },
150 : { "node", SUMO_TAG_NODE },
151 : { "type", SUMO_TAG_TYPE },
152 : { "types", SUMO_TAG_TYPES },
153 : { "laneType", SUMO_TAG_LANETYPE },
154 : { "detectorDefinition", SUMO_TAG_DETECTOR_DEFINITION },
155 : { "routeDistribution", SUMO_TAG_ROUTE_DISTRIBUTION },
156 : { "vTypeDistribution", SUMO_TAG_VTYPE_DISTRIBUTION },
157 : { "roundabout", SUMO_TAG_ROUNDABOUT },
158 : { "join", SUMO_TAG_JOIN },
159 : { "joinExclude", SUMO_TAG_JOINEXCLUDE },
160 : { "crossing", SUMO_TAG_CROSSING },
161 : { "walkingArea", SUMO_TAG_WALKINGAREA },
162 : { "stopOffset", SUMO_TAG_STOPOFFSET },
163 : { "railSignalConstraints", SUMO_TAG_RAILSIGNAL_CONSTRAINTS },
164 : { "predecessor", SUMO_TAG_PREDECESSOR },
165 : { "insertionPredecessor", SUMO_TAG_INSERTION_PREDECESSOR },
166 : { "foeInsertion", SUMO_TAG_FOE_INSERTION },
167 : { "insertionOrder", SUMO_TAG_INSERTION_ORDER },
168 : { "bidiPredecessor", SUMO_TAG_BIDI_PREDECESSOR },
169 : { "railSignalConstraintTracker", SUMO_TAG_RAILSIGNAL_CONSTRAINT_TRACKER },
170 : { "deadlock", SUMO_TAG_DEADLOCK },
171 : { "driveWay", SUMO_TAG_DRIVEWAY },
172 : { "subDriveWay", SUMO_TAG_SUBDRIVEWAY },
173 : { "link", SUMO_TAG_LINK },
174 : { "approaching", SUMO_TAG_APPROACHING },
175 : // OSM
176 : { "way", SUMO_TAG_WAY },
177 : { "nd", SUMO_TAG_ND },
178 : { "tag", SUMO_TAG_TAG },
179 : { "relation", SUMO_TAG_RELATION },
180 : { "member", SUMO_TAG_MEMBER },
181 : // View
182 : { "viewsettings", SUMO_TAG_VIEWSETTINGS },
183 : { "view3D", SUMO_TAG_VIEWSETTINGS_3D },
184 : { "decal", SUMO_TAG_VIEWSETTINGS_DECAL },
185 : { "tracker", SUMO_TAG_VIEWSETTINGS_TRACKER },
186 : { "light", SUMO_TAG_VIEWSETTINGS_LIGHT },
187 : { "scheme", SUMO_TAG_VIEWSETTINGS_SCHEME },
188 : { "opengl", SUMO_TAG_VIEWSETTINGS_OPENGL },
189 : { "background", SUMO_TAG_VIEWSETTINGS_BACKGROUND },
190 : { "edges", SUMO_TAG_VIEWSETTINGS_EDGES },
191 : { "vehicles", SUMO_TAG_VIEWSETTINGS_VEHICLES },
192 : { "persons", SUMO_TAG_VIEWSETTINGS_PERSONS },
193 : { "containers", SUMO_TAG_VIEWSETTINGS_CONTAINERS },
194 : { "junctions", SUMO_TAG_VIEWSETTINGS_JUNCTIONS },
195 : { "additionals", SUMO_TAG_VIEWSETTINGS_ADDITIONALS },
196 : { "pois", SUMO_TAG_VIEWSETTINGS_POIS },
197 : { "polys", SUMO_TAG_VIEWSETTINGS_POLYS },
198 : { "dataSettings", SUMO_TAG_VIEWSETTINGS_DATA },
199 : { "legend", SUMO_TAG_VIEWSETTINGS_LEGEND },
200 : { "event", SUMO_TAG_VIEWSETTINGS_EVENT },
201 : { "jamTime", SUMO_TAG_VIEWSETTINGS_EVENT_JAM_TIME },
202 : { "include", SUMO_TAG_INCLUDE },
203 : { "delay", SUMO_TAG_DELAY },
204 : { "viewport", SUMO_TAG_VIEWPORT },
205 : { "snapshot", SUMO_TAG_SNAPSHOT },
206 : { "breakpoint", SUMO_TAG_BREAKPOINT },
207 : { "location", SUMO_TAG_LOCATION },
208 : { "colorScheme", SUMO_TAG_COLORSCHEME },
209 : { "scalingScheme", SUMO_TAG_SCALINGSCHEME },
210 : { "entry", SUMO_TAG_ENTRY },
211 : { "rngState", SUMO_TAG_RNGSTATE },
212 : { "rngLane", SUMO_TAG_RNGLANE },
213 : { "vehicleTransfer", SUMO_TAG_VEHICLETRANSFER },
214 : { "device", SUMO_TAG_DEVICE },
215 : { "rem", SUMO_TAG_REMINDER },
216 : // Cars
217 : { "carFollowing-IDM", SUMO_TAG_CF_IDM },
218 : { "carFollowing-IDMM", SUMO_TAG_CF_IDMM },
219 : { "carFollowing-Krauss", SUMO_TAG_CF_KRAUSS },
220 : { "carFollowing-KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
221 : { "carFollowing-KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
222 : { "carFollowing-KraussX", SUMO_TAG_CF_KRAUSSX },
223 : { "carFollowing-EIDM", SUMO_TAG_CF_EIDM },
224 : { "carFollowing-SmartSK", SUMO_TAG_CF_SMART_SK },
225 : { "carFollowing-Daniel1", SUMO_TAG_CF_DANIEL1 },
226 : { "carFollowing-PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
227 : { "carFollowing-BKerner", SUMO_TAG_CF_BKERNER },
228 : { "carFollowing-Wiedemann", SUMO_TAG_CF_WIEDEMANN },
229 : { "carFollowing-W99", SUMO_TAG_CF_W99 },
230 : { "carFollowing-Rail", SUMO_TAG_CF_RAIL },
231 : { "carFollowing-ACC", SUMO_TAG_CF_ACC },
232 : { "carFollowing-CACC", SUMO_TAG_CF_CACC },
233 : { "carFollowing-CC", SUMO_TAG_CF_CC },
234 : // Person
235 : { "person", SUMO_TAG_PERSON },
236 : { "personTrip", SUMO_TAG_PERSONTRIP },
237 : { "ride", SUMO_TAG_RIDE },
238 : { "walk", SUMO_TAG_WALK },
239 : { "personFlow", SUMO_TAG_PERSONFLOW },
240 : // Data (Netedit)
241 : { "dataSet", SUMO_TAG_DATASET },
242 : { "dataInterval", SUMO_TAG_DATAINTERVAL },
243 : // Transport
244 : { "container", SUMO_TAG_CONTAINER },
245 : { "transport", SUMO_TAG_TRANSPORT },
246 : { "tranship", SUMO_TAG_TRANSHIP },
247 : { "containerFlow", SUMO_TAG_CONTAINERFLOW },
248 : //Trajectories
249 : { "trajectories", SUMO_TAG_TRAJECTORIES },
250 : { "timestep", SUMO_TAG_TIMESTEP },
251 : { "timeSlice", SUMO_TAG_TIMESLICE },
252 : { "actorConfig", SUMO_TAG_ACTORCONFIG },
253 : { "motionState", SUMO_TAG_MOTIONSTATE },
254 : { "odPair", SUMO_TAG_OD_PAIR },
255 : { "transportables", SUMO_TAG_TRANSPORTABLES },
256 : // ActivityGen statistics file
257 : { "general", AGEN_TAG_GENERAL },
258 : { "street", AGEN_TAG_STREET },
259 : { "workHours", AGEN_TAG_WORKHOURS },
260 : { "opening", AGEN_TAG_OPENING },
261 : { "closing", AGEN_TAG_CLOSING },
262 : { "schools", AGEN_TAG_SCHOOLS },
263 : { "school", AGEN_TAG_SCHOOL },
264 : { "busStation", AGEN_TAG_BUSSTATION },
265 : { "busLine", AGEN_TAG_BUSLINE },
266 : { "stations", AGEN_TAG_STATIONS },
267 : { "revStations", AGEN_TAG_REV_STATIONS },
268 : { "station", AGEN_TAG_STATION },
269 : { "frequency", AGEN_TAG_FREQUENCY },
270 : { "population", AGEN_TAG_POPULATION },
271 : { "bracket", AGEN_TAG_BRACKET },
272 : { "cityGates", AGEN_TAG_CITYGATES },
273 : { "entrance", AGEN_TAG_ENTRANCE },
274 : { "parameters", AGEN_TAG_PARAM },
275 : // Netedit
276 : { "edgeData-edge", GNE_TAG_EDGEREL_SINGLE },
277 : { "internalLane", GNE_TAG_INTERNAL_LANE },
278 : { "poiLane", GNE_TAG_POILANE },
279 : { "poiGeo", GNE_TAG_POIGEO },
280 : { "jupedsim.walkable_area", GNE_TAG_JPS_WALKABLEAREA },
281 : { "jupedsim.obstacle", GNE_TAG_JPS_OBSTACLE },
282 : { "flowRoute", GNE_TAG_FLOW_ROUTE },
283 : { "flowWithRoute", GNE_TAG_FLOW_WITHROUTE },
284 : // GNE waypoints
285 : { "waypoint", GNE_TAG_WAYPOINT },
286 : { "waypointLane", GNE_TAG_WAYPOINT_LANE },
287 : { "waypointBusStop", GNE_TAG_WAYPOINT_BUSSTOP },
288 : { "waypointTrainStop", GNE_TAG_WAYPOINT_TRAINSTOP },
289 : { "waypointContainerStop", GNE_TAG_WAYPOINT_CONTAINERSTOP },
290 : { "waypointChargingStation", GNE_TAG_WAYPOINT_CHARGINGSTATION },
291 : { "waypointParkingArea", GNE_TAG_WAYPOINT_PARKINGAREA },
292 : // GNE Person trips
293 : { "persontrip: edge->edge", GNE_TAG_PERSONTRIP_EDGE_EDGE },
294 : { "persontrip: edge->taz", GNE_TAG_PERSONTRIP_EDGE_TAZ },
295 : { "persontrip: edge->junction", GNE_TAG_PERSONTRIP_EDGE_JUNCTION },
296 : { "persontrip: edge->busstop", GNE_TAG_PERSONTRIP_EDGE_BUSSTOP },
297 : { "persontrip: edge->trainstop", GNE_TAG_PERSONTRIP_EDGE_TRAINSTOP },
298 : { "persontrip: edge->containerstop", GNE_TAG_PERSONTRIP_EDGE_CONTAINERSTOP },
299 : { "persontrip: edge->chargingstation", GNE_TAG_PERSONTRIP_EDGE_CHARGINGSTATION },
300 : { "persontrip: edge->parkingarea", GNE_TAG_PERSONTRIP_EDGE_PARKINGAREA },
301 : { "persontrip: taz->edge", GNE_TAG_PERSONTRIP_TAZ_EDGE },
302 : { "persontrip: taz->taz", GNE_TAG_PERSONTRIP_TAZ_TAZ },
303 : { "persontrip: taz->junction", GNE_TAG_PERSONTRIP_TAZ_JUNCTION },
304 : { "persontrip: taz->busstop", GNE_TAG_PERSONTRIP_TAZ_BUSSTOP },
305 : { "persontrip: taz->trainstop", GNE_TAG_PERSONTRIP_TAZ_TRAINSTOP },
306 : { "persontrip: taz->containerstop", GNE_TAG_PERSONTRIP_TAZ_CONTAINERSTOP },
307 : { "persontrip: taz->chargingstation", GNE_TAG_PERSONTRIP_TAZ_CHARGINGSTATION },
308 : { "persontrip: taz->parkingarea", GNE_TAG_PERSONTRIP_TAZ_PARKINGAREA },
309 : { "persontrip: junction->edge", GNE_TAG_PERSONTRIP_JUNCTION_EDGE },
310 : { "persontrip: junction->taz", GNE_TAG_PERSONTRIP_JUNCTION_TAZ },
311 : { "persontrip: junction->junction", GNE_TAG_PERSONTRIP_JUNCTION_JUNCTION },
312 : { "persontrip: junction->busstop", GNE_TAG_PERSONTRIP_JUNCTION_BUSSTOP },
313 : { "persontrip: junction->trainstop", GNE_TAG_PERSONTRIP_JUNCTION_TRAINSTOP },
314 : { "persontrip: junction->containerstop", GNE_TAG_PERSONTRIP_JUNCTION_CONTAINERSTOP },
315 : { "persontrip: junction->chargingstation", GNE_TAG_PERSONTRIP_JUNCTION_CHARGINGSTATION },
316 : { "persontrip: junction->parkingarea", GNE_TAG_PERSONTRIP_JUNCTION_PARKINGAREA },
317 : { "persontrip: busstop->edge", GNE_TAG_PERSONTRIP_BUSSTOP_EDGE },
318 : { "persontrip: busstop->taz", GNE_TAG_PERSONTRIP_BUSSTOP_TAZ },
319 : { "persontrip: busstop->junction", GNE_TAG_PERSONTRIP_BUSSTOP_JUNCTION },
320 : { "persontrip: busstop->busstop", GNE_TAG_PERSONTRIP_BUSSTOP_BUSSTOP },
321 : { "persontrip: busstop->trainstop", GNE_TAG_PERSONTRIP_BUSSTOP_TRAINSTOP },
322 : { "persontrip: busstop->containerstop", GNE_TAG_PERSONTRIP_BUSSTOP_CONTAINERSTOP },
323 : { "persontrip: busstop->chargingstation", GNE_TAG_PERSONTRIP_BUSSTOP_CHARGINGSTATION },
324 : { "persontrip: busstop->parkingarea", GNE_TAG_PERSONTRIP_BUSSTOP_PARKINGAREA },
325 : { "persontrip: trainstop->edge", GNE_TAG_PERSONTRIP_TRAINSTOP_EDGE },
326 : { "persontrip: trainstop->taz", GNE_TAG_PERSONTRIP_TRAINSTOP_TAZ },
327 : { "persontrip: trainstop->junction", GNE_TAG_PERSONTRIP_TRAINSTOP_JUNCTION },
328 : { "persontrip: trainstop->busstop", GNE_TAG_PERSONTRIP_TRAINSTOP_BUSSTOP },
329 : { "persontrip: trainstop->trainstop", GNE_TAG_PERSONTRIP_TRAINSTOP_TRAINSTOP },
330 : { "persontrip: trainstop->containerstop", GNE_TAG_PERSONTRIP_TRAINSTOP_CONTAINERSTOP },
331 : { "persontrip: trainstop->chargingstation", GNE_TAG_PERSONTRIP_TRAINSTOP_CHARGINGSTATION },
332 : { "persontrip: trainstop->parkingarea", GNE_TAG_PERSONTRIP_TRAINSTOP_PARKINGAREA },
333 : { "persontrip: containerstop->edge", GNE_TAG_PERSONTRIP_CONTAINERSTOP_EDGE },
334 : { "persontrip: containerstop->taz", GNE_TAG_PERSONTRIP_CONTAINERSTOP_TAZ },
335 : { "persontrip: containerstop->junction", GNE_TAG_PERSONTRIP_CONTAINERSTOP_JUNCTION },
336 : { "persontrip: containerstop->busstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_BUSSTOP },
337 : { "persontrip: containerstop->trainstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_TRAINSTOP },
338 : { "persontrip: containerstop->containerstop", GNE_TAG_PERSONTRIP_CONTAINERSTOP_CONTAINERSTOP },
339 : { "persontrip: containerstop->chargingstation", GNE_TAG_PERSONTRIP_CONTAINERSTOP_CHARGINGSTATION },
340 : { "persontrip: containerstop->parkingarea", GNE_TAG_PERSONTRIP_CONTAINERSTOP_PARKINGAREA },
341 : { "persontrip: chargingstation->edge", GNE_TAG_PERSONTRIP_CHARGINGSTATION_EDGE },
342 : { "persontrip: chargingstation->taz", GNE_TAG_PERSONTRIP_CHARGINGSTATION_TAZ },
343 : { "persontrip: chargingstation->junction", GNE_TAG_PERSONTRIP_CHARGINGSTATION_JUNCTION },
344 : { "persontrip: chargingstation->busstop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_BUSSTOP },
345 : { "persontrip: chargingstation->trainstop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_TRAINSTOP },
346 : { "persontrip: chargingstation->containestop", GNE_TAG_PERSONTRIP_CHARGINGSTATION_CONTAINERSTOP },
347 : { "persontrip: chargingstation->chargingstation", GNE_TAG_PERSONTRIP_CHARGINGSTATION_CHARGINGSTATION },
348 : { "persontrip: chargingstation->parkingarea", GNE_TAG_PERSONTRIP_CHARGINGSTATION_PARKINGAREA },
349 : { "persontrip: parkingarea->edge", GNE_TAG_PERSONTRIP_PARKINGAREA_EDGE },
350 : { "persontrip: parkingarea->taz", GNE_TAG_PERSONTRIP_PARKINGAREA_TAZ },
351 : { "persontrip: parkingarea->junction", GNE_TAG_PERSONTRIP_PARKINGAREA_JUNCTION },
352 : { "persontrip: parkingarea->busstop", GNE_TAG_PERSONTRIP_PARKINGAREA_BUSSTOP },
353 : { "persontrip: parkingarea->trainstop", GNE_TAG_PERSONTRIP_PARKINGAREA_TRAINSTOP },
354 : { "persontrip: parkingarea->containerstop", GNE_TAG_PERSONTRIP_PARKINGAREA_CONTAINERSTOP },
355 : { "persontrip: parkingarea->chargingstation", GNE_TAG_PERSONTRIP_PARKINGAREA_CHARGINGSTATION },
356 : { "persontrip: parkingarea->parkingarea", GNE_TAG_PERSONTRIP_PARKINGAREA_PARKINGAREA },
357 : // GNE Walks
358 : { "walk: edge->edge", GNE_TAG_WALK_EDGE_EDGE },
359 : { "walk: edge->taz", GNE_TAG_WALK_EDGE_TAZ },
360 : { "walk: edge->junction", GNE_TAG_WALK_EDGE_JUNCTION },
361 : { "walk: edge->busstop", GNE_TAG_WALK_EDGE_BUSSTOP },
362 : { "walk: edge->trainstop", GNE_TAG_WALK_EDGE_TRAINSTOP },
363 : { "walk: edge->containerstop", GNE_TAG_WALK_EDGE_CONTAINERSTOP },
364 : { "walk: edge->chargingstation", GNE_TAG_WALK_EDGE_CHARGINGSTATION },
365 : { "walk: edge->parkingarea", GNE_TAG_WALK_EDGE_PARKINGAREA },
366 : { "walk: taz->edge", GNE_TAG_WALK_TAZ_EDGE },
367 : { "walk: taz->taz", GNE_TAG_WALK_TAZ_TAZ },
368 : { "walk: taz->junction", GNE_TAG_WALK_TAZ_JUNCTION },
369 : { "walk: taz->busstop", GNE_TAG_WALK_TAZ_BUSSTOP },
370 : { "walk: taz->trainstop", GNE_TAG_WALK_TAZ_TRAINSTOP },
371 : { "walk: taz->containerstop", GNE_TAG_WALK_TAZ_CONTAINERSTOP },
372 : { "walk: taz->chargingstation", GNE_TAG_WALK_TAZ_CHARGINGSTATION },
373 : { "walk: taz->parkingarea", GNE_TAG_WALK_TAZ_PARKINGAREA },
374 : { "walk: junction->edge", GNE_TAG_WALK_JUNCTION_EDGE },
375 : { "walk: junction->taz", GNE_TAG_WALK_JUNCTION_TAZ },
376 : { "walk: junction->junction", GNE_TAG_WALK_JUNCTION_JUNCTION },
377 : { "walk: junction->busstop", GNE_TAG_WALK_JUNCTION_BUSSTOP },
378 : { "walk: junction->trainstop", GNE_TAG_WALK_JUNCTION_TRAINSTOP },
379 : { "walk: junction->containerstop", GNE_TAG_WALK_JUNCTION_CONTAINERSTOP },
380 : { "walk: junction->chargingstation", GNE_TAG_WALK_JUNCTION_CHARGINGSTATION },
381 : { "walk: junction->parkingarea", GNE_TAG_WALK_JUNCTION_PARKINGAREA },
382 : { "walk: busstop->edge", GNE_TAG_WALK_BUSSTOP_EDGE },
383 : { "walk: busstop->taz", GNE_TAG_WALK_BUSSTOP_TAZ },
384 : { "walk: busstop->junction", GNE_TAG_WALK_BUSSTOP_JUNCTION },
385 : { "walk: busstop->busstop", GNE_TAG_WALK_BUSSTOP_BUSSTOP },
386 : { "walk: busstop->trainstop", GNE_TAG_WALK_BUSSTOP_TRAINSTOP },
387 : { "walk: busstop->containerstop", GNE_TAG_WALK_BUSSTOP_CONTAINERSTOP },
388 : { "walk: busstop->chargingstation", GNE_TAG_WALK_BUSSTOP_CHARGINGSTATION },
389 : { "walk: busstop->parkingarea", GNE_TAG_WALK_BUSSTOP_PARKINGAREA },
390 : { "walk: trainstop->edge", GNE_TAG_WALK_TRAINSTOP_EDGE },
391 : { "walk: trainstop->taz", GNE_TAG_WALK_TRAINSTOP_TAZ },
392 : { "walk: trainstop->junction", GNE_TAG_WALK_TRAINSTOP_JUNCTION },
393 : { "walk: trainstop->busstop", GNE_TAG_WALK_TRAINSTOP_BUSSTOP },
394 : { "walk: trainstop->trainstop", GNE_TAG_WALK_TRAINSTOP_TRAINSTOP },
395 : { "walk: trainstop->containerstop", GNE_TAG_WALK_TRAINSTOP_CONTAINERSTOP },
396 : { "walk: trainstop->chargingstation", GNE_TAG_WALK_TRAINSTOP_CHARGINGSTATION },
397 : { "walk: trainstop->parkingarea", GNE_TAG_WALK_TRAINSTOP_PARKINGAREA },
398 : { "walk: containerstop->edge", GNE_TAG_WALK_CONTAINERSTOP_EDGE },
399 : { "walk: containerstop->taz", GNE_TAG_WALK_CONTAINERSTOP_TAZ },
400 : { "walk: containerstop->junction", GNE_TAG_WALK_CONTAINERSTOP_JUNCTION },
401 : { "walk: containerstop->busstop", GNE_TAG_WALK_CONTAINERSTOP_BUSSTOP },
402 : { "walk: containerstop->trainstop", GNE_TAG_WALK_CONTAINERSTOP_TRAINSTOP },
403 : { "walk: containerstop->containerstop", GNE_TAG_WALK_CONTAINERSTOP_CONTAINERSTOP },
404 : { "walk: containerstop->chargingstation", GNE_TAG_WALK_CONTAINERSTOP_CHARGINGSTATION },
405 : { "walk: containerstop->parkingarea", GNE_TAG_WALK_CONTAINERSTOP_PARKINGAREA },
406 : { "walk: chargingstation->edge", GNE_TAG_WALK_CHARGINGSTATION_EDGE },
407 : { "walk: chargingstation->taz", GNE_TAG_WALK_CHARGINGSTATION_TAZ },
408 : { "walk: chargingstation->junction", GNE_TAG_WALK_CHARGINGSTATION_JUNCTION },
409 : { "walk: chargingstation->busstop", GNE_TAG_WALK_CHARGINGSTATION_BUSSTOP },
410 : { "walk: chargingstation->trainstop", GNE_TAG_WALK_CHARGINGSTATION_TRAINSTOP },
411 : { "walk: chargingstation->containestop", GNE_TAG_WALK_CHARGINGSTATION_CONTAINERSTOP },
412 : { "walk: chargingstation->chargingstation", GNE_TAG_WALK_CHARGINGSTATION_CHARGINGSTATION },
413 : { "walk: chargingstation->parkingarea", GNE_TAG_WALK_CHARGINGSTATION_PARKINGAREA },
414 : { "walk: parkingarea->edge", GNE_TAG_WALK_PARKINGAREA_EDGE },
415 : { "walk: parkingarea->taz", GNE_TAG_WALK_PARKINGAREA_TAZ },
416 : { "walk: parkingarea->junction", GNE_TAG_WALK_PARKINGAREA_JUNCTION },
417 : { "walk: parkingarea->busstop", GNE_TAG_WALK_PARKINGAREA_BUSSTOP },
418 : { "walk: parkingarea->trainstop", GNE_TAG_WALK_PARKINGAREA_TRAINSTOP },
419 : { "walk: parkingarea->containerstop", GNE_TAG_WALK_PARKINGAREA_CONTAINERSTOP },
420 : { "walk: parkingarea->chargingstation", GNE_TAG_WALK_PARKINGAREA_CHARGINGSTATION },
421 : { "walk: parkingarea->parkingarea", GNE_TAG_WALK_PARKINGAREA_PARKINGAREA },
422 : { "walk: edges", GNE_TAG_WALK_EDGES },
423 : { "walk: route", GNE_TAG_WALK_ROUTE },
424 : // GNE Rides
425 : { "ride: edge->edge", GNE_TAG_RIDE_EDGE_EDGE },
426 : { "ride: edge->busstop", GNE_TAG_RIDE_EDGE_BUSSTOP },
427 : { "ride: edge->trainstop", GNE_TAG_RIDE_EDGE_TRAINSTOP },
428 : { "ride: edge->containerstop", GNE_TAG_RIDE_EDGE_CONTAINERSTOP },
429 : { "ride: edge->chargingstation", GNE_TAG_RIDE_EDGE_CHARGINGSTATION },
430 : { "ride: edge->parkingarea", GNE_TAG_RIDE_EDGE_PARKINGAREA },
431 : { "ride: busstop->edge", GNE_TAG_RIDE_BUSSTOP_EDGE },
432 : { "ride: busstop->busstop", GNE_TAG_RIDE_BUSSTOP_BUSSTOP },
433 : { "ride: busstop->trainstop", GNE_TAG_RIDE_BUSSTOP_TRAINSTOP },
434 : { "ride: busstop->containerstop", GNE_TAG_RIDE_BUSSTOP_CONTAINERSTOP },
435 : { "ride: busstop->chargingstation", GNE_TAG_RIDE_BUSSTOP_CHARGINGSTATION },
436 : { "ride: busstop->parkingarea", GNE_TAG_RIDE_BUSSTOP_PARKINGAREA },
437 : { "ride: trainstop->edge", GNE_TAG_RIDE_TRAINSTOP_EDGE },
438 : { "ride: trainstop->busstop", GNE_TAG_RIDE_TRAINSTOP_BUSSTOP },
439 : { "ride: trainstop->trainstop", GNE_TAG_RIDE_TRAINSTOP_TRAINSTOP },
440 : { "ride: trainstop->containerstop", GNE_TAG_RIDE_TRAINSTOP_CONTAINERSTOP },
441 : { "ride: trainstop->chargingstation", GNE_TAG_RIDE_TRAINSTOP_CHARGINGSTATION },
442 : { "ride: trainstop->parkingarea", GNE_TAG_RIDE_TRAINSTOP_PARKINGAREA },
443 : { "ride: containerstop->edge", GNE_TAG_RIDE_CONTAINERSTOP_EDGE },
444 : { "ride: containerstop->busstop", GNE_TAG_RIDE_CONTAINERSTOP_BUSSTOP },
445 : { "ride: containerstop->trainstop", GNE_TAG_RIDE_CONTAINERSTOP_TRAINSTOP },
446 : { "ride: containerstop->containerstop", GNE_TAG_RIDE_CONTAINERSTOP_CONTAINERSTOP },
447 : { "ride: containerstop->chargingstation", GNE_TAG_RIDE_CONTAINERSTOP_CHARGINGSTATION },
448 : { "ride: containerstop->parkingarea", GNE_TAG_RIDE_CONTAINERSTOP_PARKINGAREA },
449 : { "ride: chargingstation->edge", GNE_TAG_RIDE_CHARGINGSTATION_EDGE },
450 : { "ride: chargingstation->busstop", GNE_TAG_RIDE_CHARGINGSTATION_BUSSTOP },
451 : { "ride: chargingstation->trainstop", GNE_TAG_RIDE_CHARGINGSTATION_TRAINSTOP },
452 : { "ride: chargingstation->containestop", GNE_TAG_RIDE_CHARGINGSTATION_CONTAINERSTOP },
453 : { "ride: chargingstation->chargingstation", GNE_TAG_RIDE_CHARGINGSTATION_CHARGINGSTATION },
454 : { "ride: chargingstation->parkingarea", GNE_TAG_RIDE_CHARGINGSTATION_PARKINGAREA },
455 : { "ride: parkingarea->edge", GNE_TAG_RIDE_PARKINGAREA_EDGE },
456 : { "ride: parkingarea->busstop", GNE_TAG_RIDE_PARKINGAREA_BUSSTOP },
457 : { "ride: parkingarea->trainstop", GNE_TAG_RIDE_PARKINGAREA_TRAINSTOP },
458 : { "ride: parkingarea->containerstop", GNE_TAG_RIDE_PARKINGAREA_CONTAINERSTOP },
459 : { "ride: parkingarea->chargingstation", GNE_TAG_RIDE_PARKINGAREA_CHARGINGSTATION },
460 : { "ride: parkingarea->parkingarea", GNE_TAG_RIDE_PARKINGAREA_PARKINGAREA },
461 : // GNE Person Stops
462 : { "stopPerson", GNE_TAG_STOPPERSON },
463 : { "stopPerson: edge", GNE_TAG_STOPPERSON_EDGE },
464 : { "stopPerson: busStop", GNE_TAG_STOPPERSON_BUSSTOP },
465 : { "stopPerson: trainStop", GNE_TAG_STOPPERSON_TRAINSTOP },
466 : { "stopPerson: containerStop", GNE_TAG_STOPPERSON_CONTAINERSTOP },
467 : { "stopPerson: chargingStation", GNE_TAG_STOPPERSON_CHARGINGSTATION },
468 : { "stopPerson: parkingArea", GNE_TAG_STOPPERSON_PARKINGAREA },
469 : // GNE Transports
470 : { "transport: edge->edge", GNE_TAG_TRANSPORT_EDGE_EDGE },
471 : { "transport: edge->busstop", GNE_TAG_TRANSPORT_EDGE_BUSSTOP },
472 : { "transport: edge->trainstop", GNE_TAG_TRANSPORT_EDGE_TRAINSTOP },
473 : { "transport: edge->containerstop", GNE_TAG_TRANSPORT_EDGE_CONTAINERSTOP },
474 : { "transport: edge->chargingstation", GNE_TAG_TRANSPORT_EDGE_CHARGINGSTATION },
475 : { "transport: edge->parkingarea", GNE_TAG_TRANSPORT_EDGE_PARKINGAREA },
476 : { "transport: busstop->edge", GNE_TAG_TRANSPORT_BUSSTOP_EDGE },
477 : { "transport: busstop->busstop", GNE_TAG_TRANSPORT_BUSSTOP_BUSSTOP },
478 : { "transport: busstop->trainstop", GNE_TAG_TRANSPORT_BUSSTOP_TRAINSTOP },
479 : { "transport: busstop->containerstop", GNE_TAG_TRANSPORT_BUSSTOP_CONTAINERSTOP },
480 : { "transport: busstop->chargingstation", GNE_TAG_TRANSPORT_BUSSTOP_CHARGINGSTATION },
481 : { "transport: busstop->parkingarea", GNE_TAG_TRANSPORT_BUSSTOP_PARKINGAREA },
482 : { "transport: trainstop->edge", GNE_TAG_TRANSPORT_TRAINSTOP_EDGE },
483 : { "transport: trainstop->busstop", GNE_TAG_TRANSPORT_TRAINSTOP_BUSSTOP },
484 : { "transport: trainstop->trainstop", GNE_TAG_TRANSPORT_TRAINSTOP_TRAINSTOP },
485 : { "transport: trainstop->containerstop", GNE_TAG_TRANSPORT_TRAINSTOP_CONTAINERSTOP },
486 : { "transport: trainstop->chargingstation", GNE_TAG_TRANSPORT_TRAINSTOP_CHARGINGSTATION },
487 : { "transport: trainstop->parkingarea", GNE_TAG_TRANSPORT_TRAINSTOP_PARKINGAREA },
488 : { "transport: containerstop->edge", GNE_TAG_TRANSPORT_CONTAINERSTOP_EDGE },
489 : { "transport: containerstop->busstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_BUSSTOP },
490 : { "transport: containerstop->trainstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_TRAINSTOP },
491 : { "transport: containerstop->containerstop", GNE_TAG_TRANSPORT_CONTAINERSTOP_CONTAINERSTOP },
492 : { "transport: containerstop->chargingstation", GNE_TAG_TRANSPORT_CONTAINERSTOP_CHARGINGSTATION },
493 : { "transport: containerstop->parkingarea", GNE_TAG_TRANSPORT_CONTAINERSTOP_PARKINGAREA },
494 : { "transport: chargingstation->edge", GNE_TAG_TRANSPORT_CHARGINGSTATION_EDGE },
495 : { "transport: chargingstation->busstop", GNE_TAG_TRANSPORT_CHARGINGSTATION_BUSSTOP },
496 : { "transport: chargingstation->trainstop", GNE_TAG_TRANSPORT_CHARGINGSTATION_TRAINSTOP },
497 : { "transport: chargingstation->containestop", GNE_TAG_TRANSPORT_CHARGINGSTATION_CONTAINERSTOP },
498 : { "transport: chargingstation->chargingstation", GNE_TAG_TRANSPORT_CHARGINGSTATION_CHARGINGSTATION },
499 : { "transport: chargingstation->parkingarea", GNE_TAG_TRANSPORT_CHARGINGSTATION_PARKINGAREA },
500 : { "transport: parkingarea->edge", GNE_TAG_TRANSPORT_PARKINGAREA_EDGE },
501 : { "transport: parkingarea->busstop", GNE_TAG_TRANSPORT_PARKINGAREA_BUSSTOP },
502 : { "transport: parkingarea->trainstop", GNE_TAG_TRANSPORT_PARKINGAREA_TRAINSTOP },
503 : { "transport: parkingarea->containerstop", GNE_TAG_TRANSPORT_PARKINGAREA_CONTAINERSTOP },
504 : { "transport: parkingarea->chargingstation", GNE_TAG_TRANSPORT_PARKINGAREA_CHARGINGSTATION },
505 : { "transport: parkingarea->parkingarea", GNE_TAG_TRANSPORT_PARKINGAREA_PARKINGAREA },
506 : // GNE Tranships
507 : { "tranship: edge->edge", GNE_TAG_TRANSHIP_EDGE_EDGE },
508 : { "tranship: edge->busstop", GNE_TAG_TRANSHIP_EDGE_BUSSTOP },
509 : { "tranship: edge->trainstop", GNE_TAG_TRANSHIP_EDGE_TRAINSTOP },
510 : { "tranship: edge->containerstop", GNE_TAG_TRANSHIP_EDGE_CONTAINERSTOP },
511 : { "tranship: edge->chargingstation", GNE_TAG_TRANSHIP_EDGE_CHARGINGSTATION },
512 : { "tranship: edge->parkingarea", GNE_TAG_TRANSHIP_EDGE_PARKINGAREA },
513 : { "tranship: busstop->edge", GNE_TAG_TRANSHIP_BUSSTOP_EDGE },
514 : { "tranship: busstop->busstop", GNE_TAG_TRANSHIP_BUSSTOP_BUSSTOP },
515 : { "tranship: busstop->trainstop", GNE_TAG_TRANSHIP_BUSSTOP_TRAINSTOP },
516 : { "tranship: busstop->containerstop", GNE_TAG_TRANSHIP_BUSSTOP_CONTAINERSTOP },
517 : { "tranship: busstop->chargingstation", GNE_TAG_TRANSHIP_BUSSTOP_CHARGINGSTATION },
518 : { "tranship: busstop->parkingarea", GNE_TAG_TRANSHIP_BUSSTOP_PARKINGAREA },
519 : { "tranship: trainstop->edge", GNE_TAG_TRANSHIP_TRAINSTOP_EDGE },
520 : { "tranship: trainstop->busstop", GNE_TAG_TRANSHIP_TRAINSTOP_BUSSTOP },
521 : { "tranship: trainstop->trainstop", GNE_TAG_TRANSHIP_TRAINSTOP_TRAINSTOP },
522 : { "tranship: trainstop->containerstop", GNE_TAG_TRANSHIP_TRAINSTOP_CONTAINERSTOP },
523 : { "tranship: trainstop->chargingstation", GNE_TAG_TRANSHIP_TRAINSTOP_CHARGINGSTATION },
524 : { "tranship: trainstop->parkingarea", GNE_TAG_TRANSHIP_TRAINSTOP_PARKINGAREA },
525 : { "tranship: containerstop->edge", GNE_TAG_TRANSHIP_CONTAINERSTOP_EDGE },
526 : { "tranship: containerstop->busstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_BUSSTOP },
527 : { "tranship: containerstop->trainstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_TRAINSTOP },
528 : { "tranship: containerstop->containerstop", GNE_TAG_TRANSHIP_CONTAINERSTOP_CONTAINERSTOP },
529 : { "tranship: containerstop->chargingstation", GNE_TAG_TRANSHIP_CONTAINERSTOP_CHARGINGSTATION },
530 : { "tranship: containerstop->parkingarea", GNE_TAG_TRANSHIP_CONTAINERSTOP_PARKINGAREA },
531 : { "tranship: chargingstation->edge", GNE_TAG_TRANSHIP_CHARGINGSTATION_EDGE },
532 : { "tranship: chargingstation->busstop", GNE_TAG_TRANSHIP_CHARGINGSTATION_BUSSTOP },
533 : { "tranship: chargingstation->trainstop", GNE_TAG_TRANSHIP_CHARGINGSTATION_TRAINSTOP },
534 : { "tranship: chargingstation->containestop", GNE_TAG_TRANSHIP_CHARGINGSTATION_CONTAINERSTOP },
535 : { "tranship: chargingstation->chargingstation", GNE_TAG_TRANSHIP_CHARGINGSTATION_CHARGINGSTATION },
536 : { "tranship: chargingstation->parkingarea", GNE_TAG_TRANSHIP_CHARGINGSTATION_PARKINGAREA },
537 : { "tranship: parkingarea->edge", GNE_TAG_TRANSHIP_PARKINGAREA_EDGE },
538 : { "tranship: parkingarea->busstop", GNE_TAG_TRANSHIP_PARKINGAREA_BUSSTOP },
539 : { "tranship: parkingarea->trainstop", GNE_TAG_TRANSHIP_PARKINGAREA_TRAINSTOP },
540 : { "tranship: parkingarea->containerstop", GNE_TAG_TRANSHIP_PARKINGAREA_CONTAINERSTOP },
541 : { "tranship: parkingarea->chargingstation", GNE_TAG_TRANSHIP_PARKINGAREA_CHARGINGSTATION },
542 : { "tranship: parkingarea->parkingarea", GNE_TAG_TRANSHIP_PARKINGAREA_PARKINGAREA },
543 : { "tranship: edges", GNE_TAG_TRANSHIP_EDGES },
544 : // GNE Container Stops
545 : { "stopContainer", GNE_TAG_STOPCONTAINER },
546 : { "stopContainer: edge", GNE_TAG_STOPCONTAINER_EDGE },
547 : { "stopContainer: busStop", GNE_TAG_STOPCONTAINER_BUSSTOP },
548 : { "stopContainer: trainStop", GNE_TAG_STOPCONTAINER_TRAINSTOP },
549 : { "stopContainer: containerStop", GNE_TAG_STOPCONTAINER_CONTAINERSTOP },
550 : { "stopContainer: chargingStation", GNE_TAG_STOPCONTAINER_CHARGINGSTATION },
551 : { "stopContainer: parkingArea", GNE_TAG_STOPCONTAINER_PARKINGAREA },
552 : // root file
553 : { "rootFile", SUMO_TAG_ROOTFILE },
554 : // netedit sets
555 : { "network", GNE_TAG_SUPERMODE_NETWORK },
556 : { "demand", GNE_TAG_SUPERMODE_DEMAND },
557 : { "data", GNE_TAG_SUPERMODE_DATA },
558 : { "stoppingPlaces", GNE_TAG_STOPPINGPLACES },
559 : { "detectors", GNE_TAG_DETECTORS },
560 : { "shapes", GNE_TAG_SHAPES },
561 : { "TAZs", GNE_TAG_TAZS },
562 : { "wires", GNE_TAG_WIRES },
563 : { "jupedsim", GNE_TAG_JUPEDSIM },
564 : { "flows", GNE_TAG_FLOWS },
565 : { "stops", GNE_TAG_STOPS },
566 : { "personPlans", GNE_TAG_PERSONPLANS },
567 : { "personTrips", GNE_TAG_PERSONTRIPS },
568 : { "rides", GNE_TAG_RIDES },
569 : { "walks", GNE_TAG_WALKS },
570 : { "personStops", GNE_TAG_PERSONSTOPS },
571 : { "containerPlans", GNE_TAG_CONTAINERPLANS },
572 : { "transports", GNE_TAG_TRANSPORTS },
573 : { "tranships", GNE_TAG_TRANSHIPS },
574 : { "containerStops", GNE_TAG_CONTAINERSTOPS },
575 : { "datas", GNE_TAG_DATAS },
576 : // attributes
577 : { "allAttributes", GNE_TAG_ATTRIBUTES_ALL },
578 : // other
579 : { "error", SUMO_TAG_ERROR },
580 : // Last element
581 : { "", SUMO_TAG_NOTHING } // -> must be the last one
582 : };
583 :
584 :
585 : SequentialStringBijection::Entry SUMOXMLDefinitions::attrs[] = {
586 : // meta value for attribute enum
587 : { "default", SUMO_ATTR_DEFAULT },
588 : // meandata
589 : { "sampledSeconds", SUMO_ATTR_SAMPLEDSECONDS },
590 : { "density", SUMO_ATTR_DENSITY },
591 : { "laneDensity", SUMO_ATTR_LANEDENSITY },
592 : { "occupancy", SUMO_ATTR_OCCUPANCY },
593 : { "waitingTime", SUMO_ATTR_WAITINGTIME },
594 : { "timeLoss", SUMO_ATTR_TIMELOSS },
595 : { "speed", SUMO_ATTR_SPEED },
596 : { "speedRelative", SUMO_ATTR_SPEEDREL },
597 : { "departed", SUMO_ATTR_DEPARTED },
598 : { "arrived", SUMO_ATTR_ARRIVED },
599 : { "entered", SUMO_ATTR_ENTERED },
600 : { "left", SUMO_ATTR_LEFT },
601 : { "vaporized", SUMO_ATTR_VAPORIZED },
602 : { "teleported", SUMO_ATTR_TELEPORTED },
603 : { "traveltime", SUMO_ATTR_TRAVELTIME },
604 : { "laneChangedFrom", SUMO_ATTR_LANECHANGEDFROM },
605 : { "laneChangedTo", SUMO_ATTR_LANECHANGEDTO },
606 : { "overlapTraveltime", SUMO_ATTR_OVERLAPTRAVELTIME },
607 : { "CO_abs", SUMO_ATTR_CO_ABS },
608 : { "CO2_abs", SUMO_ATTR_CO2_ABS },
609 : { "HC_abs", SUMO_ATTR_HC_ABS },
610 : { "PMx_abs", SUMO_ATTR_PMX_ABS },
611 : { "NOx_abs", SUMO_ATTR_NOX_ABS },
612 : { "fuel_abs", SUMO_ATTR_FUEL_ABS },
613 : { "electricity_abs", SUMO_ATTR_ELECTRICITY_ABS },
614 : { "CO_normed", SUMO_ATTR_CO_NORMED },
615 : { "CO2_normed", SUMO_ATTR_CO2_NORMED },
616 : { "HC_normed", SUMO_ATTR_HC_NORMED },
617 : { "PMx_normed", SUMO_ATTR_PMX_NORMED },
618 : { "NOx_normed", SUMO_ATTR_NOX_NORMED },
619 : { "fuel_normed", SUMO_ATTR_FUEL_NORMED },
620 : { "electricity_normed", SUMO_ATTR_ELECTRICITY_NORMED },
621 : { "CO_perVeh", SUMO_ATTR_CO_PERVEH },
622 : { "CO2_perVeh", SUMO_ATTR_CO2_PERVEH },
623 : { "HC_perVeh", SUMO_ATTR_HC_PERVEH },
624 : { "PMx_perVeh", SUMO_ATTR_PMX_PERVEH },
625 : { "NOx_perVeh", SUMO_ATTR_NOX_PERVEH },
626 : { "fuel_perVeh", SUMO_ATTR_FUEL_PERVEH },
627 : { "electricity_perVeh", SUMO_ATTR_ELECTRICITY_PERVEH },
628 : { "noise", SUMO_ATTR_NOISE },
629 : { "amount", SUMO_ATTR_AMOUNT },
630 : { "averageSpeed", SUMO_ATTR_AVERAGESPEED },
631 : // FCD
632 : { "x", SUMO_ATTR_X },
633 : { "y", SUMO_ATTR_Y },
634 : { "z", SUMO_ATTR_Z },
635 : { "angle", SUMO_ATTR_ANGLE },
636 : { "type", SUMO_ATTR_TYPE },
637 : { "pos", SUMO_ATTR_POSITION },
638 : { "edge", SUMO_ATTR_EDGE },
639 : { "lane", SUMO_ATTR_LANE },
640 : { "slope", SUMO_ATTR_SLOPE },
641 : { "signals", SUMO_ATTR_SIGNALS },
642 : { "acceleration", SUMO_ATTR_ACCELERATION },
643 : { "accelerationLat", SUMO_ATTR_ACCELERATION_LAT },
644 : { "distance", SUMO_ATTR_DISTANCE },
645 : { "leaderID", SUMO_ATTR_LEADER_ID },
646 : { "leaderSpeed", SUMO_ATTR_LEADER_SPEED },
647 : { "leaderGap", SUMO_ATTR_LEADER_GAP },
648 : { "vehicle", SUMO_ATTR_VEHICLE },
649 : { "odometer", SUMO_ATTR_ODOMETER },
650 : { "posLat", SUMO_ATTR_POSITION_LAT },
651 : { "speedLat", SUMO_ATTR_SPEED_LAT },
652 : // only usable with SumoXMLAttrMask
653 : { "arrivalDelay", SUMO_ATTR_ARRIVALDELAY },
654 : // emission-output
655 : { "CO", SUMO_ATTR_CO },
656 : { "CO2", SUMO_ATTR_CO2 },
657 : { "HC", SUMO_ATTR_HC },
658 : { "PMx", SUMO_ATTR_PMX },
659 : { "NOx", SUMO_ATTR_NOX },
660 : { "fuel", SUMO_ATTR_FUEL },
661 : { "electricity", SUMO_ATTR_ELECTRICITY },
662 : { "route", SUMO_ATTR_ROUTE },
663 : { "eclass", SUMO_ATTR_ECLASS },
664 : { "waiting", SUMO_ATTR_WAITING },
665 : // meso-attributes
666 : { "segment", SUMO_ATTR_SEGMENT },
667 : { "queue", SUMO_ATTR_QUEUE },
668 : { "entryTime", SUMO_ATTR_ENTRYTIME },
669 : { "eventTime", SUMO_ATTR_EVENTTIME },
670 : { "blockTime", SUMO_ATTR_BLOCKTIME },
671 : { "tag", SUMO_ATTR_TAG },
672 : { "overlapDensity", SUMO_ATTR_OVERLAPDENSITY },
673 : { "flow", SUMO_ATTR_FLOW },
674 : // Edge
675 : { "id", SUMO_ATTR_ID },
676 : { "refId", SUMO_ATTR_REFID },
677 : { "name", SUMO_ATTR_NAME },
678 : { "version", SUMO_ATTR_VERSION },
679 : { "priority", SUMO_ATTR_PRIORITY },
680 : { "numLanes", SUMO_ATTR_NUMLANES },
681 : { "friction", SUMO_ATTR_FRICTION },
682 : { "oneway", SUMO_ATTR_ONEWAY },
683 : { "width", SUMO_ATTR_WIDTH },
684 : { "widthResolution", SUMO_ATTR_WIDTHRESOLUTION },
685 : { "maxWidth", SUMO_ATTR_MAXWIDTH },
686 : { "minWidth", SUMO_ATTR_MINWIDTH },
687 : { "sidewalkWidth", SUMO_ATTR_SIDEWALKWIDTH },
688 : { "bikeLaneWidth", SUMO_ATTR_BIKELANEWIDTH },
689 : { "remove", SUMO_ATTR_REMOVE },
690 : { "length", SUMO_ATTR_LENGTH },
691 : { "bidi", SUMO_ATTR_BIDI },
692 : { "routingType", SUMO_ATTR_ROUTINGTYPE },
693 : // Split
694 : { "idBefore", SUMO_ATTR_ID_BEFORE },
695 : { "idAfter", SUMO_ATTR_ID_AFTER },
696 : // Positions
697 : { "center", SUMO_ATTR_CENTER },
698 : { "centerX", SUMO_ATTR_CENTER_X },
699 : { "centerY", SUMO_ATTR_CENTER_Y },
700 : { "centerZ", SUMO_ATTR_CENTER_Z },
701 :
702 : { "key", SUMO_ATTR_KEY },
703 : { "requestSize", SUMO_ATTR_REQUESTSIZE },
704 : { "request", SUMO_ATTR_REQUEST },
705 : { "response", SUMO_ATTR_RESPONSE },
706 : { "programID", SUMO_ATTR_PROGRAMID },
707 : { "phase", SUMO_ATTR_PHASE },
708 : { "offset", SUMO_ATTR_OFFSET },
709 : { "endOffset", SUMO_ATTR_ENDOFFSET },
710 : { "incLanes", SUMO_ATTR_INCLANES },
711 : { "intLanes", SUMO_ATTR_INTLANES },
712 :
713 : { "weight", SUMO_ATTR_WEIGHT },
714 : { "node", SUMO_ATTR_NODE },
715 : { "edges", SUMO_ATTR_EDGES },
716 : // Vehicle
717 : { "depart", SUMO_ATTR_DEPART },
718 : { "departLane", SUMO_ATTR_DEPARTLANE },
719 : { "departPos", SUMO_ATTR_DEPARTPOS },
720 : { "departPosLat", SUMO_ATTR_DEPARTPOS_LAT },
721 : { "departSpeed", SUMO_ATTR_DEPARTSPEED },
722 : { "departEdge", SUMO_ATTR_DEPARTEDGE },
723 : { "arrivalLane", SUMO_ATTR_ARRIVALLANE },
724 : { "arrivalPos", SUMO_ATTR_ARRIVALPOS },
725 : { "arrivalPosRandomized", SUMO_ATTR_ARRIVALPOS_RANDOMIZED },
726 : { "arrivalPosLat", SUMO_ATTR_ARRIVALPOS_LAT },
727 : { "arrivalSpeed", SUMO_ATTR_ARRIVALSPEED },
728 : { "arrivalEdge", SUMO_ATTR_ARRIVALEDGE },
729 : { "maxSpeed", SUMO_ATTR_MAXSPEED },
730 : { "desiredMaxSpeed", SUMO_ATTR_DESIRED_MAXSPEED },
731 : { "maxSpeedLat", SUMO_ATTR_MAXSPEED_LAT },
732 : { "latAlignment", SUMO_ATTR_LATALIGNMENT },
733 : { "minGapLat", SUMO_ATTR_MINGAP_LAT },
734 : { "accel", SUMO_ATTR_ACCEL },
735 : { "decel", SUMO_ATTR_DECEL },
736 : { "emergencyDecel", SUMO_ATTR_EMERGENCYDECEL },
737 : { "apparentDecel", SUMO_ATTR_APPARENTDECEL },
738 : { "maxAccelProfile", SUMO_ATTR_MAXACCEL_PROFILE },
739 : { "desAccelProfile", SUMO_ATTR_DESACCEL_PROFILE },
740 : { "actionStepLength", SUMO_ATTR_ACTIONSTEPLENGTH },
741 : { "vClass", SUMO_ATTR_VCLASS },
742 : { "vClasses", SUMO_ATTR_VCLASSES },
743 : { "exceptions", SUMO_ATTR_EXCEPTIONS },
744 : { "repno", SUMO_ATTR_REPNUMBER },
745 : { "speedFactor", SUMO_ATTR_SPEEDFACTOR },
746 : { "speedDev", SUMO_ATTR_SPEEDDEV },
747 : { "laneChangeModel", SUMO_ATTR_LANE_CHANGE_MODEL },
748 : { "carFollowModel", SUMO_ATTR_CAR_FOLLOW_MODEL },
749 : { "minGap", SUMO_ATTR_MINGAP },
750 : { "collisionMinGapFactor", SUMO_ATTR_COLLISION_MINGAP_FACTOR },
751 : { "boardingDuration", SUMO_ATTR_BOARDING_DURATION },
752 : { "loadingDuration", SUMO_ATTR_LOADING_DURATION },
753 : { "boardingFactor", SUMO_ATTR_BOARDING_FACTOR },
754 : { "scale", SUMO_ATTR_SCALE },
755 : { "insertionChecks", SUMO_ATTR_INSERTIONCHECKS },
756 : { "timeToTeleport", SUMO_ATTR_TIME_TO_TELEPORT },
757 : { "timeToTeleportBidi", SUMO_ATTR_TIME_TO_TELEPORT_BIDI },
758 : { "speedFactorPremature", SUMO_ATTR_SPEEDFACTOR_PREMATURE },
759 : { "maneuverAngleTimes", SUMO_ATTR_MANEUVER_ANGLE_TIMES },
760 : { "parkingBadges", SUMO_ATTR_PARKING_BADGES },
761 : // MSDevice_ElecHybrid
762 : { "overheadWireChargingPower", SUMO_ATTR_OVERHEADWIRECHARGINGPOWER },
763 : // OverheadWire
764 : { "overheadWireSegment", SUMO_ATTR_OVERHEAD_WIRE_SEGMENT },
765 : { "segments", SUMO_ATTR_OVERHEAD_WIRE_SEGMENTS }, // <- deprecate
766 : { "voltage", SUMO_ATTR_VOLTAGE },
767 : { "voltageSource", SUMO_ATTR_VOLTAGESOURCE },
768 : { "currentLimit", SUMO_ATTR_CURRENTLIMIT },
769 : { "substationId", SUMO_ATTR_SUBSTATIONID },
770 : { "wireResistivity", SUMO_ATTR_OVERHEAD_WIRE_RESISTIVITY },
771 : { "forbiddenInnerLanes", SUMO_ATTR_OVERHEAD_WIRE_FORBIDDEN },
772 : { "clamps", SUMO_ATTR_OVERHEAD_WIRE_CLAMPS }, // <- deprecate
773 : { "idSegmentStartClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_START }, // <- deprecate
774 : { "idSegmentEndClamp", SUMO_ATTR_OVERHEAD_WIRE_CLAMP_END }, // <- deprecate
775 : { "wireClampStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_START },
776 : { "wireClampEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_END },
777 : { "wireClampLaneStart", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANESTART },
778 : { "wireClampLaneEnd", SUMO_ATTR_OVERHEAD_WIRECLAMP_LANEEND },
779 : // Charging Station
780 : { "power", SUMO_ATTR_CHARGINGPOWER },
781 : { "totalPower", SUMO_ATTR_TOTALPOWER },
782 : { "efficiency", SUMO_ATTR_EFFICIENCY },
783 : { "chargeInTransit", SUMO_ATTR_CHARGEINTRANSIT },
784 : { "chargeDelay", SUMO_ATTR_CHARGEDELAY},
785 : { "chargeType", SUMO_ATTR_CHARGETYPE},
786 : // MSDevice_Battery
787 : { "actualBatteryCapacity", SUMO_ATTR_ACTUALBATTERYCAPACITY },
788 : { "chargeLevel", SUMO_ATTR_CHARGELEVEL },
789 : { "maximumBatteryCapacity", SUMO_ATTR_MAXIMUMBATTERYCAPACITY },
790 : { "maximumChargeRate", SUMO_ATTR_MAXIMUMCHARGERATE },
791 : { "chargeLevelTable", SUMO_ATTR_CHARGELEVELTABLE },
792 : { "chargeCurveTable", SUMO_ATTR_CHARGECURVETABLE },
793 : { "maximumPower", SUMO_ATTR_MAXIMUMPOWER },
794 : { "vehicleMass", SUMO_ATTR_VEHICLEMASS },
795 : { "rotatingMass", SUMO_ATTR_ROTATINGMASS },
796 : { "frontSurfaceArea", SUMO_ATTR_FRONTSURFACEAREA },
797 : { "airDragCoefficient", SUMO_ATTR_AIRDRAGCOEFFICIENT },
798 : { "internalMomentOfInertia", SUMO_ATTR_INTERNALMOMENTOFINERTIA },
799 : { "radialDragCoefficient", SUMO_ATTR_RADIALDRAGCOEFFICIENT },
800 : { "rollDragCoefficient", SUMO_ATTR_ROLLDRAGCOEFFICIENT },
801 : { "constantPowerIntake", SUMO_ATTR_CONSTANTPOWERINTAKE },
802 : { "propulsionEfficiency", SUMO_ATTR_PROPULSIONEFFICIENCY },
803 : { "recuperationEfficiency", SUMO_ATTR_RECUPERATIONEFFICIENCY },
804 : { "recuperationEfficiencyByDecel", SUMO_ATTR_RECUPERATIONEFFICIENCY_BY_DECELERATION },
805 : { "stoppingTreshold", SUMO_ATTR_STOPPINGTHRESHOLD },
806 : // MSDevice_Tripinfo
807 : { "waitingCount", SUMO_ATTR_WAITINGCOUNT },
808 : { "stopTime", SUMO_ATTR_STOPTIME },
809 :
810 : // MSElecHybridExport
811 : { "overheadWireId", SUMO_ATTR_OVERHEADWIREID },
812 : { "tractionSubstationId", SUMO_ATTR_TRACTIONSUBSTATIONID },
813 : { "current", SUMO_ATTR_CURRENTFROMOVERHEADWIRE },
814 : { "circuitVoltage", SUMO_ATTR_VOLTAGEOFOVERHEADWIRE },
815 : { "alphaCircuitSolver", SUMO_ATTR_ALPHACIRCUITSOLVER },
816 : { "recuperationEnabled", SUMO_ATTR_RECUPERATIONENABLE },
817 : // MSBatteryExport
818 : { "energyConsumed", SUMO_ATTR_ENERGYCONSUMED },
819 : { "totalEnergyConsumed", SUMO_ATTR_TOTALENERGYCONSUMED },
820 : { "totalEnergyRegenerated", SUMO_ATTR_TOTALENERGYREGENERATED },
821 : { "chargingStationId", SUMO_ATTR_CHARGINGSTATIONID },
822 : { "energyCharged", SUMO_ATTR_ENERGYCHARGED },
823 : { "energyChargedInTransit", SUMO_ATTR_ENERGYCHARGEDINTRANSIT },
824 : { "energyChargedStopped", SUMO_ATTR_ENERGYCHARGEDSTOPPED },
825 : { "posOnLane", SUMO_ATTR_POSONLANE },
826 : { "timeStopped", SUMO_ATTR_TIMESTOPPED },
827 : // MMPEVEM
828 : { "wheelRadius", SUMO_ATTR_WHEELRADIUS },
829 : { "maximumTorque", SUMO_ATTR_MAXIMUMTORQUE },
830 : { "maximumSpeed", SUMO_ATTR_MAXIMUMSPEED },
831 : { "gearEfficiency", SUMO_ATTR_GEAREFFICIENCY },
832 : { "gearRatio", SUMO_ATTR_GEARRATIO },
833 : { "maximumRecuperationTorque", SUMO_ATTR_MAXIMUMRECUPERATIONTORQUE },
834 : { "maximumRecuperationPower", SUMO_ATTR_MAXIMUMRECUPERATIONPOWER },
835 : { "internalBatteryResistance", SUMO_ATTR_INTERNALBATTERYRESISTANCE },
836 : { "nominalBatteryVoltage", SUMO_ATTR_NOMINALBATTERYVOLTAGE },
837 : { "powerLossMap", SUMO_ATTR_POWERLOSSMAP },
838 : // ChargingStation output
839 : { "chargingStatus", SUMO_ATTR_CHARGING_STATUS },
840 : { "totalEnergyCharged", SUMO_ATTR_TOTALENERGYCHARGED },
841 : { "chargingSteps", SUMO_ATTR_CHARGINGSTEPS },
842 : { "totalEnergyChargedIntoVehicle", SUMO_ATTR_TOTALENERGYCHARGED_VEHICLE },
843 : { "chargingBegin", SUMO_ATTR_CHARGINGBEGIN },
844 : { "chargingEnd", SUMO_ATTR_CHARGINGEND },
845 : { "partialCharge", SUMO_ATTR_PARTIALCHARGE },
846 : { "minPower", SUMO_ATTR_MINPOWER },
847 : { "minCharge", SUMO_ATTR_MINCHARGE },
848 : { "maxCharge", SUMO_ATTR_MAXCHARGE },
849 : { "minEfficiency", SUMO_ATTR_MINEFFICIENCY },
850 : { "maxEfficiency", SUMO_ATTR_MAXEFFICIENCY },
851 :
852 : // general emission / consumption
853 : { "shutOffStopDuration", SUMO_ATTR_SHUT_OFF_STOP },
854 : { "shutOffAutoDuration", SUMO_ATTR_SHUT_OFF_AUTO },
855 : { "loading", SUMO_ATTR_LOADING },
856 :
857 : /// @name carFollow model attributes
858 : { "sigma", SUMO_ATTR_SIGMA },
859 : { "sigmaStep", SUMO_ATTR_SIGMA_STEP },
860 : { "startupDelay", SUMO_ATTR_STARTUP_DELAY },
861 : { "tau", SUMO_ATTR_TAU },
862 : { "tmp1", SUMO_ATTR_TMP1 },
863 : { "tmp2", SUMO_ATTR_TMP2 },
864 : { "tmp3", SUMO_ATTR_TMP3 },
865 : { "tmp4", SUMO_ATTR_TMP4 },
866 : { "tmp5", SUMO_ATTR_TMP5 },
867 :
868 : { "vehdynamics", SUMO_ATTR_CF_EIDM_USEVEHDYNAMICS },
869 : { "tpreview", SUMO_ATTR_CF_EIDM_T_LOOK_AHEAD },
870 : { "tPersDrive", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_DRIVE },
871 : { "treaction", SUMO_ATTR_CF_EIDM_T_REACTION },
872 : { "tPersEstimate", SUMO_ATTR_CF_EIDM_T_PERSISTENCE_ESTIMATE },
873 : { "ccoolness", SUMO_ATTR_CF_EIDM_C_COOLNESS },
874 : { "sigmaleader", SUMO_ATTR_CF_EIDM_SIG_LEADER },
875 : { "sigmagap", SUMO_ATTR_CF_EIDM_SIG_GAP },
876 : { "sigmaerror", SUMO_ATTR_CF_EIDM_SIG_ERROR },
877 : { "jerkmax", SUMO_ATTR_CF_EIDM_JERK_MAX },
878 : { "epsilonacc", SUMO_ATTR_CF_EIDM_EPSILON_ACC },
879 : { "taccmax", SUMO_ATTR_CF_EIDM_T_ACC_MAX },
880 : { "Mflatness", SUMO_ATTR_CF_EIDM_M_FLATNESS },
881 : { "Mbegin", SUMO_ATTR_CF_EIDM_M_BEGIN },
882 : { "maxvehpreview", SUMO_ATTR_CF_EIDM_MAX_VEH_PREVIEW },
883 :
884 : { "speedControlGain", SUMO_ATTR_SC_GAIN },
885 : { "gapClosingControlGainSpeed", SUMO_ATTR_GCC_GAIN_SPEED },
886 : { "gapClosingControlGainSpace", SUMO_ATTR_GCC_GAIN_SPACE },
887 : { "gapControlGainSpeed", SUMO_ATTR_GC_GAIN_SPEED },
888 : { "gapControlGainSpace", SUMO_ATTR_GC_GAIN_SPACE },
889 : { "collisionAvoidanceGainSpeed", SUMO_ATTR_CA_GAIN_SPEED },
890 : { "collisionAvoidanceGainSpace", SUMO_ATTR_CA_GAIN_SPACE },
891 : { "collisionAvoidanceOverride", SUMO_ATTR_CA_OVERRIDE },
892 :
893 : { "speedControlGainCACC", SUMO_ATTR_SC_GAIN_CACC },
894 : { "gapClosingControlGainGap", SUMO_ATTR_GCC_GAIN_GAP_CACC },
895 : { "gapClosingControlGainGapDot", SUMO_ATTR_GCC_GAIN_GAP_DOT_CACC },
896 : { "gapControlGainGap", SUMO_ATTR_GC_GAIN_GAP_CACC },
897 : { "gapControlGainGapDot", SUMO_ATTR_GC_GAIN_GAP_DOT_CACC },
898 : { "collisionAvoidanceGainGap", SUMO_ATTR_CA_GAIN_GAP_CACC },
899 : { "collisionAvoidanceGainGapDot", SUMO_ATTR_CA_GAIN_GAP_DOT_CACC },
900 : { "tauCACCToACC", SUMO_ATTR_HEADWAY_TIME_CACC_TO_ACC },
901 : { "speedControlMinGap", SUMO_ATTR_SC_MIN_GAP },
902 : { "applyDriverState", SUMO_ATTR_APPLYDRIVERSTATE },
903 :
904 : { "trainType", SUMO_ATTR_TRAIN_TYPE },
905 : { "speedTable", SUMO_ATTR_SPEED_TABLE },
906 : { "tractionTable", SUMO_ATTR_TRACTION_TABLE },
907 : { "resistanceTable", SUMO_ATTR_RESISTANCE_TABLE },
908 : { "massFactor", SUMO_ATTR_MASSFACTOR },
909 : { "maxPower", SUMO_ATTR_MAXPOWER },
910 : { "maxTraction", SUMO_ATTR_MAXTRACTION },
911 : { "resCoef_constant", SUMO_ATTR_RESISTANCE_COEFFICIENT_CONSTANT },
912 : { "resCoef_linear", SUMO_ATTR_RESISTANCE_COEFFICIENT_LINEAR },
913 : { "resCoef_quadratic", SUMO_ATTR_RESISTANCE_COEFFICIENT_QUADRATIC },
914 : /// @}
915 :
916 : /// @name Lane changing model attributes
917 : /// @{
918 : { "lcStrategic", SUMO_ATTR_LCA_STRATEGIC_PARAM },
919 : { "lcCooperative", SUMO_ATTR_LCA_COOPERATIVE_PARAM },
920 : { "lcSpeedGain", SUMO_ATTR_LCA_SPEEDGAIN_PARAM },
921 : { "lcKeepRight", SUMO_ATTR_LCA_KEEPRIGHT_PARAM },
922 : { "lcSublane", SUMO_ATTR_LCA_SUBLANE_PARAM },
923 : { "lcOpposite", SUMO_ATTR_LCA_OPPOSITE_PARAM },
924 : { "lcPushy", SUMO_ATTR_LCA_PUSHY },
925 : { "lcPushyGap", SUMO_ATTR_LCA_PUSHYGAP },
926 : { "lcStrategicLookahead", SUMO_ATTR_LCA_STRATEGIC_LOOKAHEAD },
927 : { "lcAssertive", SUMO_ATTR_LCA_ASSERTIVE },
928 : { "lcImpatience", SUMO_ATTR_LCA_IMPATIENCE },
929 : { "lcTimeToImpatience", SUMO_ATTR_LCA_TIME_TO_IMPATIENCE },
930 : { "lcAccelLat", SUMO_ATTR_LCA_ACCEL_LAT },
931 : { "lcTurnAlignmentDistance", SUMO_ATTR_LCA_TURN_ALIGNMENT_DISTANCE },
932 : { "lcOvertakeRight", SUMO_ATTR_LCA_OVERTAKE_RIGHT },
933 : { "lcLookaheadLeft", SUMO_ATTR_LCA_LOOKAHEADLEFT },
934 : { "lcSpeedGainRight", SUMO_ATTR_LCA_SPEEDGAINRIGHT },
935 : { "lcSpeedGainLookahead", SUMO_ATTR_LCA_SPEEDGAIN_LOOKAHEAD },
936 : { "lcSpeedGainRemainTime", SUMO_ATTR_LCA_SPEEDGAIN_REMAIN_TIME },
937 : { "lcSpeedGainUrgency", SUMO_ATTR_LCA_SPEEDGAIN_URGENCY },
938 : { "lcCooperativeRoundabout", SUMO_ATTR_LCA_COOPERATIVE_ROUNDABOUT },
939 : { "lcCooperativeSpeed", SUMO_ATTR_LCA_COOPERATIVE_SPEED },
940 : { "lcCooperativeHelpTime", SUMO_ATTR_LCA_COOPERATIVE_HELPTIME },
941 : { "lcMaxSpeedLatStanding", SUMO_ATTR_LCA_MAXSPEEDLATSTANDING },
942 : { "lcMaxSpeedLatFactor", SUMO_ATTR_LCA_MAXSPEEDLATFACTOR },
943 : { "lcMaxDistLatStanding", SUMO_ATTR_LCA_MAXDISTLATSTANDING },
944 : { "lcLaneDiscipline", SUMO_ATTR_LCA_LANE_DISCIPLINE },
945 : { "lcSigma", SUMO_ATTR_LCA_SIGMA },
946 : { "lcKeepRightAcceptanceTime", SUMO_ATTR_LCA_KEEPRIGHT_ACCEPTANCE_TIME },
947 : { "lcOvertakeDeltaSpeedFactor", SUMO_ATTR_LCA_OVERTAKE_DELTASPEED_FACTOR },
948 : { "lcContRight", SUMO_ATTR_LCA_CONTRIGHT },
949 : { "lcExperimental1", SUMO_ATTR_LCA_EXPERIMENTAL1 },
950 : /// @}
951 :
952 : /// @name junction model attributes
953 : /// @{
954 : { "jmCrossingGap", SUMO_ATTR_JM_CROSSING_GAP },
955 : { "jmDriveAfterYellowTime", SUMO_ATTR_JM_DRIVE_AFTER_YELLOW_TIME },
956 : { "jmDriveAfterRedTime", SUMO_ATTR_JM_DRIVE_AFTER_RED_TIME },
957 : { "jmDriveRedSpeed", SUMO_ATTR_JM_DRIVE_RED_SPEED },
958 : { "jmIgnoreKeepClearTime", SUMO_ATTR_JM_IGNORE_KEEPCLEAR_TIME },
959 : { "jmIgnoreFoeSpeed", SUMO_ATTR_JM_IGNORE_FOE_SPEED },
960 : { "jmIgnoreFoeProb", SUMO_ATTR_JM_IGNORE_FOE_PROB },
961 : { "jmIgnoreJunctionFoeProb", SUMO_ATTR_JM_IGNORE_JUNCTION_FOE_PROB },
962 : { "jmSigmaMinor", SUMO_ATTR_JM_SIGMA_MINOR },
963 : { "jmStoplineGap", SUMO_ATTR_JM_STOPLINE_GAP },
964 : { "jmStoplineGapMinor", SUMO_ATTR_JM_STOPLINE_GAP_MINOR },
965 : { "jmStoplineCrossingGap", SUMO_ATTR_JM_STOPLINE_CROSSING_GAP },
966 : { "jmTimegapMinor", SUMO_ATTR_JM_TIMEGAP_MINOR },
967 : { "jmExtraGap", SUMO_ATTR_JM_EXTRA_GAP },
968 : { "jmAdvance", SUMO_ATTR_JM_ADVANCE },
969 : { "jmStopSignWait", SUMO_ATTR_JM_STOPSIGN_WAIT },
970 : { "jmAllwayStopWait", SUMO_ATTR_JM_ALLWAYSTOP_WAIT },
971 : { "junctionModel.ignoreIDs", SUMO_ATTR_JM_IGNORE_IDS },
972 : { "junctionModel.ignoreTypes", SUMO_ATTR_JM_IGNORE_TYPES },
973 : { "carFollowModel.ignoreIDs", SUMO_ATTR_CF_IGNORE_IDS },
974 : { "carFollowModel.ignoreTypes", SUMO_ATTR_CF_IGNORE_TYPES },
975 : /// @}
976 : { "flexArrival", SUMO_ATTR_FLEX_ARRIVAL },
977 :
978 : { "last", SUMO_ATTR_LAST },
979 : { "cost", SUMO_ATTR_COST },
980 : { "costs", SUMO_ATTR_COSTS },
981 : { "savings", SUMO_ATTR_SAVINGS },
982 : { "exitTimes", SUMO_ATTR_EXITTIMES },
983 : { "probability", SUMO_ATTR_PROB },
984 : { "replacedAtTime", SUMO_ATTR_REPLACED_AT_TIME },
985 : { "replacedOnIndex", SUMO_ATTR_REPLACED_ON_INDEX },
986 : { "count", SUMO_ATTR_COUNT },
987 : { "probabilities", SUMO_ATTR_PROBS },
988 : { "routes", SUMO_ATTR_ROUTES },
989 : { "vTypes", SUMO_ATTR_VTYPES },
990 : { "nextEdges", SUMO_ATTR_NEXT_EDGES },
991 : { "deterministic", SUMO_ATTR_DETERMINISTIC },
992 :
993 : { "lanes", SUMO_ATTR_LANES },
994 : { "from", SUMO_ATTR_FROM },
995 : { "to", SUMO_ATTR_TO },
996 : { "fromLonLat", SUMO_ATTR_FROMLONLAT },
997 : { "toLonLat", SUMO_ATTR_TOLONLAT },
998 : { "fromXY", SUMO_ATTR_FROMXY },
999 : { "toXY", SUMO_ATTR_TOXY },
1000 : { "fromJunction", SUMO_ATTR_FROM_JUNCTION },
1001 : { "toJunction", SUMO_ATTR_TO_JUNCTION },
1002 : { "period", SUMO_ATTR_PERIOD },
1003 : { "repeat", SUMO_ATTR_REPEAT },
1004 : { "cycleTime", SUMO_ATTR_CYCLETIME },
1005 : { "fromTaz", SUMO_ATTR_FROM_TAZ },
1006 : { "toTaz", SUMO_ATTR_TO_TAZ },
1007 : { "reroute", SUMO_ATTR_REROUTE },
1008 : { "personCapacity", SUMO_ATTR_PERSON_CAPACITY },
1009 : { "containerCapacity", SUMO_ATTR_CONTAINER_CAPACITY },
1010 : { "parkingLength", SUMO_ATTR_PARKING_LENGTH },
1011 : { "personNumber", SUMO_ATTR_PERSON_NUMBER },
1012 : { "containerNumber", SUMO_ATTR_CONTAINER_NUMBER },
1013 : { "modes", SUMO_ATTR_MODES },
1014 : { "walkFactor", SUMO_ATTR_WALKFACTOR },
1015 :
1016 : { "function", SUMO_ATTR_FUNCTION },
1017 : { "freq", SUMO_ATTR_FREQUENCY },
1018 : { "style", SUMO_ATTR_STYLE },
1019 : { "file", SUMO_ATTR_FILE },
1020 : { "local", SUMO_ATTR_LOCAL },
1021 : { "number", SUMO_ATTR_NUMBER },
1022 : { "duration", SUMO_ATTR_DURATION },
1023 : { "until", SUMO_ATTR_UNTIL },
1024 : { "arrival", SUMO_ATTR_ARRIVAL },
1025 : { "extension", SUMO_ATTR_EXTENSION },
1026 : { "started", SUMO_ATTR_STARTED },
1027 : { "ended", SUMO_ATTR_ENDED },
1028 : { "routeProbe", SUMO_ATTR_ROUTEPROBE },
1029 : { "crossingEdges", SUMO_ATTR_CROSSING_EDGES },
1030 : // Traffic light & Nodes
1031 : { "time", SUMO_ATTR_TIME },
1032 : { "begin", SUMO_ATTR_BEGIN },
1033 : { "end", SUMO_ATTR_END },
1034 : { "tl", SUMO_ATTR_TLID },
1035 : { "tlType", SUMO_ATTR_TLTYPE },
1036 : { "tlLayout", SUMO_ATTR_TLLAYOUT },
1037 : { "linkIndex", SUMO_ATTR_TLLINKINDEX },
1038 : { "linkIndex2", SUMO_ATTR_TLLINKINDEX2 },
1039 : { "shape", SUMO_ATTR_SHAPE },
1040 : { "outlineShape", SUMO_ATTR_OUTLINESHAPE },
1041 : { "spreadType", SUMO_ATTR_SPREADTYPE },
1042 : { "radius", SUMO_ATTR_RADIUS },
1043 : { "customShape", SUMO_ATTR_CUSTOMSHAPE },
1044 : { "keepClear", SUMO_ATTR_KEEP_CLEAR },
1045 : { "indirect", SUMO_ATTR_INDIRECT },
1046 : { "rightOfWay", SUMO_ATTR_RIGHT_OF_WAY },
1047 : { "fringe", SUMO_ATTR_FRINGE },
1048 : { "roundabout", SUMO_ATTR_ROUNDABOUT },
1049 : { "color", SUMO_ATTR_COLOR },
1050 : { "dir", SUMO_ATTR_DIR },
1051 : { "state", SUMO_ATTR_STATE },
1052 : { "lcState", SUMO_ATTR_LCSTATE },
1053 : { "icon", SUMO_ATTR_ICON },
1054 : { "layer", SUMO_ATTR_LAYER },
1055 : { "fill", SUMO_ATTR_FILL },
1056 : { "lineWidth", SUMO_ATTR_LINEWIDTH },
1057 : { "prefix", SUMO_ATTR_PREFIX },
1058 : { "discard", SUMO_ATTR_DISCARD },
1059 :
1060 : { "fromLane", SUMO_ATTR_FROM_LANE },
1061 : { "toLane", SUMO_ATTR_TO_LANE },
1062 : { "dest", SUMO_ATTR_DEST },
1063 : { "source", SUMO_ATTR_SOURCE },
1064 : { "via", SUMO_ATTR_VIA },
1065 : { "viaLonLat", SUMO_ATTR_VIALONLAT },
1066 : { "viaXY", SUMO_ATTR_VIAXY },
1067 : { "viaJunctions", SUMO_ATTR_VIAJUNCTIONS },
1068 : { "nodes", SUMO_ATTR_NODES },
1069 : { "visibility", SUMO_ATTR_VISIBILITY_DISTANCE },
1070 :
1071 : { "minDur", SUMO_ATTR_MINDURATION },
1072 : { "maxDur", SUMO_ATTR_MAXDURATION },
1073 : { "earliestEnd", SUMO_ATTR_EARLIEST_END },
1074 : { "latestEnd", SUMO_ATTR_LATEST_END },
1075 : { "earlyTarget", SUMO_ATTR_EARLY_TARGET },
1076 : { "finalTarget", SUMO_ATTR_FINAL_TARGET },
1077 : { "check", SUMO_ATTR_CHECK },
1078 : { "nArgs", SUMO_ATTR_NARGS },
1079 : { "vehext", SUMO_ATTR_VEHICLEEXTENSION },
1080 : { "yellow", SUMO_ATTR_YELLOW },
1081 : { "red", SUMO_ATTR_RED },
1082 : { "next", SUMO_ATTR_NEXT },
1083 : { "foes", SUMO_ATTR_FOES },
1084 : { "constraints", SUMO_ATTR_CONSTRAINTS },
1085 : { "rail", SUMO_ATTR_RAIL },
1086 : { "detectors", SUMO_ATTR_DETECTORS },
1087 : { "conditions", SUMO_ATTR_CONDITIONS },
1088 : { "saveDetectors", SUMO_ATTR_SAVE_DETECTORS },
1089 : { "saveConditions", SUMO_ATTR_SAVE_CONDITIONS },
1090 :
1091 : // E2 detector
1092 : { "cont", SUMO_ATTR_CONT },
1093 : { "contPos", SUMO_ATTR_CONTPOS },
1094 : { "timeThreshold", SUMO_ATTR_HALTING_TIME_THRESHOLD },
1095 : { "speedThreshold", SUMO_ATTR_HALTING_SPEED_THRESHOLD },
1096 : { "jamThreshold", SUMO_ATTR_JAM_DIST_THRESHOLD },
1097 : { "show", SUMO_ATTR_SHOW_DETECTOR },
1098 : // E3 detector
1099 : { "openEntry", SUMO_ATTR_OPEN_ENTRY },
1100 : { "expectArrival", SUMO_ATTR_EXPECT_ARRIVAL },
1101 :
1102 : { "wautID", SUMO_ATTR_WAUT_ID },
1103 : { "junctionID", SUMO_ATTR_JUNCTION_ID },
1104 : { "procedure", SUMO_ATTR_PROCEDURE },
1105 : { "synchron", SUMO_ATTR_SYNCHRON },
1106 : { "refTime", SUMO_ATTR_REF_TIME },
1107 : { "startProg", SUMO_ATTR_START_PROG },
1108 : { "off", SUMO_ATTR_OFF },
1109 : { "friendlyPos", SUMO_ATTR_FRIENDLY_POS },
1110 : { "splitByType", SUMO_ATTR_SPLIT_VTYPE },
1111 : { "uncontrolled", SUMO_ATTR_UNCONTROLLED },
1112 : { "pass", SUMO_ATTR_PASS },
1113 : { "busStop", SUMO_ATTR_BUS_STOP },
1114 : { "trainStop", SUMO_ATTR_TRAIN_STOP },
1115 : { "containerStop", SUMO_ATTR_CONTAINER_STOP },
1116 : { "parkingArea", SUMO_ATTR_PARKING_AREA },
1117 : { "roadsideCapacity", SUMO_ATTR_ROADSIDE_CAPACITY },
1118 : { "acceptedBadges", SUMO_ATTR_ACCEPTED_BADGES },
1119 : { "onRoad", SUMO_ATTR_ONROAD },
1120 : { "chargingStation", SUMO_ATTR_CHARGING_STATION },
1121 : { "group", SUMO_ATTR_GROUP },
1122 : { "line", SUMO_ATTR_LINE },
1123 : { "lines", SUMO_ATTR_LINES },
1124 : { "tripId", SUMO_ATTR_TRIP_ID },
1125 : { "split", SUMO_ATTR_SPLIT },
1126 : { "join", SUMO_ATTR_JOIN },
1127 : { "intended", SUMO_ATTR_INTENDED },
1128 : { "onDemand", SUMO_ATTR_ONDEMAND },
1129 : { "jump", SUMO_ATTR_JUMP },
1130 : { "jumpUntil", SUMO_ATTR_JUMP_UNTIL },
1131 : { "usedEnded", SUMO_ATTR_USED_ENDED },
1132 : { "collision", SUMO_ATTR_COLLISION },
1133 : { "value", SUMO_ATTR_VALUE },
1134 : { "prohibitor", SUMO_ATTR_PROHIBITOR },
1135 : { "prohibited", SUMO_ATTR_PROHIBITED },
1136 : { "allow", SUMO_ATTR_ALLOW },
1137 : { "disallow", SUMO_ATTR_DISALLOW },
1138 : { "prefer", SUMO_ATTR_PREFER },
1139 : { "changeLeft", SUMO_ATTR_CHANGE_LEFT },
1140 : { "changeRight", SUMO_ATTR_CHANGE_RIGHT },
1141 : { "controlledInner", SUMO_ATTR_CONTROLLED_INNER },
1142 : { "vehsPerHour", SUMO_ATTR_VEHSPERHOUR },
1143 : { "personsPerHour", SUMO_ATTR_PERSONSPERHOUR },
1144 : { "containersPerHour", SUMO_ATTR_CONTAINERSPERHOUR },
1145 : { "perHour", SUMO_ATTR_PERHOUR },
1146 : { "done", SUMO_ATTR_DONE },
1147 : { "output", SUMO_ATTR_OUTPUT },
1148 : { "height", SUMO_ATTR_HEIGHT },
1149 : { "guiShape", SUMO_ATTR_GUISHAPE },
1150 : { "osgFile", SUMO_ATTR_OSGFILE },
1151 : { "imgFile", SUMO_ATTR_IMGFILE },
1152 : { "emissionClass", SUMO_ATTR_EMISSIONCLASS },
1153 : { "mass", SUMO_ATTR_MASS },
1154 : { "impatience", SUMO_ATTR_IMPATIENCE },
1155 : { "startPos", SUMO_ATTR_STARTPOS },
1156 : { "endPos", SUMO_ATTR_ENDPOS },
1157 : { "triggered", SUMO_ATTR_TRIGGERED },
1158 : { "containerTriggered", SUMO_ATTR_CONTAINER_TRIGGERED },
1159 : { "parking", SUMO_ATTR_PARKING },
1160 : { "expected", SUMO_ATTR_EXPECTED },
1161 : { "permitted", SUMO_ATTR_PERMITTED },
1162 : { "expectedContainers", SUMO_ATTR_EXPECTED_CONTAINERS },
1163 : { "index", SUMO_ATTR_INDEX },
1164 :
1165 : { "entering", SUMO_ATTR_ENTERING },
1166 : { "excludeEmpty", SUMO_ATTR_EXCLUDE_EMPTY },
1167 : { "withInternal", SUMO_ATTR_WITH_INTERNAL },
1168 : { "trackVehicles", SUMO_ATTR_TRACK_VEHICLES },
1169 : { "detectPersons", SUMO_ATTR_DETECT_PERSONS },
1170 : { "maxTraveltime", SUMO_ATTR_MAX_TRAVELTIME },
1171 : { "minSamples", SUMO_ATTR_MIN_SAMPLES },
1172 : { "writeAttributes", SUMO_ATTR_WRITE_ATTRIBUTES },
1173 : { "edgesFile", SUMO_ATTR_EDGESFILE },
1174 : { "aggregate", SUMO_ATTR_AGGREGATE },
1175 : { "numEdges", SUMO_ATTR_NUMEDGES },
1176 :
1177 : { "lon", SUMO_ATTR_LON },
1178 : { "lat", SUMO_ATTR_LAT },
1179 : { "action", SUMO_ATTR_ACTION },
1180 : { "geo", SUMO_ATTR_GEO },
1181 : { "geoShape", SUMO_ATTR_GEOSHAPE },
1182 : { "k", SUMO_ATTR_K },
1183 : { "v", SUMO_ATTR_V },
1184 : { "ref", SUMO_ATTR_REF },
1185 : { "href", SUMO_ATTR_HREF },
1186 : { "zoom", SUMO_ATTR_ZOOM },
1187 : { "interpolated", SUMO_ATTR_INTERPOLATED },
1188 : { "threshold", SUMO_ATTR_THRESHOLD },
1189 :
1190 : { "netOffset", SUMO_ATTR_NET_OFFSET },
1191 : { "convBoundary", SUMO_ATTR_CONV_BOUNDARY },
1192 : { "origBoundary", SUMO_ATTR_ORIG_BOUNDARY },
1193 : { "projParameter", SUMO_ATTR_ORIG_PROJ },
1194 :
1195 : { "tauLast", SUMO_ATTR_CF_PWAGNER2009_TAULAST },
1196 : { "apProb", SUMO_ATTR_CF_PWAGNER2009_APPROB },
1197 : { "delta", SUMO_ATTR_CF_IDM_DELTA },
1198 : { "stepping", SUMO_ATTR_CF_IDM_STEPPING },
1199 : { "adaptFactor", SUMO_ATTR_CF_IDMM_ADAPT_FACTOR },
1200 : { "adaptTime", SUMO_ATTR_CF_IDMM_ADAPT_TIME },
1201 : { "phi", SUMO_ATTR_CF_KERNER_PHI },
1202 :
1203 : { "security", SUMO_ATTR_CF_WIEDEMANN_SECURITY },
1204 : { "estimation", SUMO_ATTR_CF_WIEDEMANN_ESTIMATION },
1205 : { "cc1", SUMO_ATTR_CF_W99_CC1 },
1206 : { "cc2", SUMO_ATTR_CF_W99_CC2 },
1207 : { "cc3", SUMO_ATTR_CF_W99_CC3 },
1208 : { "cc4", SUMO_ATTR_CF_W99_CC4 },
1209 : { "cc5", SUMO_ATTR_CF_W99_CC5 },
1210 : { "cc6", SUMO_ATTR_CF_W99_CC6 },
1211 : { "cc7", SUMO_ATTR_CF_W99_CC7 },
1212 : { "cc8", SUMO_ATTR_CF_W99_CC8 },
1213 : { "cc9", SUMO_ATTR_CF_W99_CC9 },
1214 :
1215 : { "ccDecel", SUMO_ATTR_CF_CC_CCDECEL },
1216 : { "constSpacing", SUMO_ATTR_CF_CC_CONSTSPACING },
1217 : { "kp", SUMO_ATTR_CF_CC_KP },
1218 : { "lambda", SUMO_ATTR_CF_CC_LAMBDA },
1219 : { "c1", SUMO_ATTR_CF_CC_C1 },
1220 : { "xi", SUMO_ATTR_CF_CC_XI },
1221 : { "omegaN", SUMO_ATTR_CF_CC_OMEGAN },
1222 : { "tauEngine", SUMO_ATTR_CF_CC_TAU },
1223 : { "lanesCount", SUMO_ATTR_CF_CC_LANES_COUNT },
1224 : { "ccAccel", SUMO_ATTR_CF_CC_CCACCEL },
1225 : { "ploegKp", SUMO_ATTR_CF_CC_PLOEG_KP },
1226 : { "ploegKd", SUMO_ATTR_CF_CC_PLOEG_KD },
1227 : { "ploegH", SUMO_ATTR_CF_CC_PLOEG_H },
1228 : { "flatbedKa", SUMO_ATTR_CF_CC_FLATBED_KA },
1229 : { "flatbedKv", SUMO_ATTR_CF_CC_FLATBED_KV },
1230 : { "flatbedKp", SUMO_ATTR_CF_CC_FLATBED_KP },
1231 : { "flatbedD", SUMO_ATTR_CF_CC_FLATBED_D },
1232 : { "flatbedH", SUMO_ATTR_CF_CC_FLATBED_H },
1233 :
1234 : { "generateWalks", SUMO_ATTR_GENERATE_WALKS },
1235 : { "actType", SUMO_ATTR_ACTTYPE },
1236 : { "junctionCornerDetail", SUMO_ATTR_CORNERDETAIL },
1237 : { "junctionLinkDetail", SUMO_ATTR_LINKDETAIL },
1238 : { "rectangularLaneCut", SUMO_ATTR_RECTANGULAR_LANE_CUT },
1239 : { "walkingareas", SUMO_ATTR_WALKINGAREAS },
1240 : { "lefthand", SUMO_ATTR_LEFTHAND },
1241 : { "limitTurnSpeed", SUMO_ATTR_LIMIT_TURN_SPEED },
1242 : { "checkLaneFoesAll", SUMO_ATTR_CHECKLANEFOES_ALL },
1243 : { "checkLaneFoesRoundabout", SUMO_ATTR_CHECKLANEFOES_ROUNDABOUT },
1244 : { "tlsIgnoreInternalJunctionJam", SUMO_ATTR_TLS_IGNORE_INTERNAL_JUNCTION_JAM },
1245 : { "avoidOverlap", SUMO_ATTR_AVOID_OVERLAP },
1246 : { "junctionHigherSpeed", SUMO_ATTR_HIGHER_SPEED },
1247 : { "internalJunctionsVehicleWidth", SUMO_ATTR_INTERNAL_JUNCTIONS_VEHICLE_WIDTH },
1248 : { "junctionsMinimalShape", SUMO_ATTR_JUNCTIONS_MINIMAL_SHAPE },
1249 : { "junctionsEndpointShape", SUMO_ATTR_JUNCTIONS_ENDPOINT_SHAPE },
1250 :
1251 : { "actorConfig", SUMO_ATTR_ACTORCONFIG },
1252 : { "startTime", SUMO_ATTR_STARTTIME },
1253 : { "vehicleClass", SUMO_ATTR_VEHICLECLASS },
1254 : { "origin", SUMO_ATTR_ORIGIN },
1255 : { "destination", SUMO_ATTR_DESTINATION },
1256 : { "visible", SUMO_ATTR_VISIBLE },
1257 : { "main", SUMO_ATTR_MAIN },
1258 : { "siding", SUMO_ATTR_SIDING },
1259 : { "minSaving", SUMO_ATTR_MINSAVING },
1260 : { "defer", SUMO_ATTR_DEFER },
1261 : { "limit", SUMO_ATTR_LIMIT },
1262 : { "active", SUMO_ATTR_ACTIVE },
1263 : { "arrivalTime", SUMO_ATTR_ARRIVALTIME },
1264 : { "arrivalTimeBraking", SUMO_ATTR_ARRIVALTIMEBRAKING },
1265 : { "arrivalSpeedBraking", SUMO_ATTR_ARRIVALSPEEDBRAKING },
1266 : { "optional", SUMO_ATTR_OPTIONAL },
1267 : { "vehicles", SUMO_ATTR_VEHICLES },
1268 :
1269 : #ifndef WIN32
1270 : { "commandPosix", SUMO_ATTR_COMMAND },
1271 : #else
1272 : { "commandWindows", SUMO_ATTR_COMMAND },
1273 : #endif
1274 :
1275 : // ActivityGen statistics file
1276 : { "inhabitants", AGEN_ATTR_INHABITANTS },
1277 : { "households", AGEN_ATTR_HOUSEHOLDS },
1278 : { "childrenAgeLimit", AGEN_ATTR_CHILDREN },
1279 : { "retirementAgeLimit", AGEN_ATTR_RETIREMENT },
1280 : { "carRate", AGEN_ATTR_CARS },
1281 : { "unemploymentRate", AGEN_ATTR_UNEMPLOYEMENT },
1282 : { "laborDemand", AGEN_ATTR_LABORDEMAND },
1283 : { "footDistanceLimit", AGEN_ATTR_MAX_FOOT_DIST },
1284 : { "incomingTraffic", AGEN_ATTR_IN_TRAFFIC },
1285 : { "incoming", AGEN_ATTR_INCOMING },
1286 : { "outgoingTraffic", AGEN_ATTR_OUT_TRAFFIC },
1287 : { "outgoing", AGEN_ATTR_OUTGOING },
1288 : { "population", AGEN_ATTR_POPULATION },
1289 : { "workPosition", AGEN_ATTR_OUT_WORKPOSITION },
1290 : { "hour", AGEN_ATTR_HOUR },
1291 : { "proportion", AGEN_ATTR_PROP },
1292 : { "capacity", AGEN_ATTR_CAPACITY },
1293 : { "opening", AGEN_ATTR_OPENING },
1294 : { "closing", AGEN_ATTR_CLOSING },
1295 : { "maxTripDuration", AGEN_ATTR_MAX_TRIP_DURATION },
1296 : { "rate", AGEN_ATTR_RATE },
1297 : { "beginAge", AGEN_ATTR_BEGINAGE },
1298 : { "endAge", AGEN_ATTR_ENDAGE },
1299 : { "peopleNbr", AGEN_ATTR_PEOPLENBR },
1300 : { "carPreference", AGEN_ATTR_CARPREF },
1301 : { "meanTimePerKmInCity", AGEN_ATTR_CITYSPEED },
1302 : { "freeTimeActivityRate", AGEN_ATTR_FREETIMERATE },
1303 : { "uniformRandomTraffic", AGEN_ATTR_UNI_RAND_TRAFFIC },
1304 : { "departureVariation", AGEN_ATTR_DEP_VARIATION },
1305 :
1306 : // SUMOConfig files
1307 : { "config-file", SUMO_ATTR_CONFIGFILE },
1308 : { "net-file", SUMO_ATTR_NETFILE },
1309 : { "additional-files", SUMO_ATTR_ADDITIONALFILES },
1310 : { "route-files", SUMO_ATTR_ROUTEFILES },
1311 : { "data-files", SUMO_ATTR_DATAFILES },
1312 : { "meandata-files", SUMO_ATTR_MEANDATAFILES },
1313 :
1314 : // Netedit attributes
1315 : { "selected", GNE_ATTR_SELECTED },
1316 : { "modificationStatusNotForPrinting", GNE_ATTR_MODIFICATION_STATUS },
1317 : { "shapeStart", GNE_ATTR_SHAPE_START },
1318 : { "shapeEnd", GNE_ATTR_SHAPE_END },
1319 : { "isBidi", GNE_ATTR_BIDIR },
1320 : { "close shape", GNE_ATTR_CLOSE_SHAPE },
1321 : { "parent", GNE_ATTR_PARENT },
1322 : { "dataSet", GNE_ATTR_DATASET },
1323 : { "parameters", GNE_ATTR_PARAMETERS },
1324 : { "flowParameter", GNE_ATTR_FLOWPARAMETERS },
1325 : { "defaultVTypeModified", GNE_ATTR_DEFAULT_VTYPE_MODIFIED },
1326 : { "defaultProbability", GNE_ATTR_DEFAULT_PROBABILITY },
1327 : { "centerView", GNE_ATTR_CENTER_AFTER_CREATION },
1328 : { "opposite", GNE_ATTR_OPPOSITE },
1329 : { "shiftLaneIndex", GNE_ATTR_SHIFTLANEINDEX },
1330 : { "stopOffset", GNE_ATTR_STOPOFFSET },
1331 : { "stopOException", GNE_ATTR_STOPOEXCEPTION },
1332 : { "poisson", GNE_ATTR_POISSON },
1333 : { "stopIndex", GNE_ATTR_STOPINDEX },
1334 : { "pathStopIndex", GNE_ATTR_PATHSTOPINDEX },
1335 : { "planGeometryStartPos", GNE_ATTR_PLAN_GEOMETRY_STARTPOS },
1336 : { "planGeometryEndPos", GNE_ATTR_PLAN_GEOMETRY_ENDPOS },
1337 : { "fromLaneID", GNE_ATTR_FROM_LANEID },
1338 : { "toLaneID", GNE_ATTR_TO_LANEID },
1339 : { "tazCentroid", GNE_ATTR_TAZ_CENTROID },
1340 : { "terminate", GNE_ATTR_FLOW_TERMINATE },
1341 : { "spacing", GNE_ATTR_FLOW_SPACING },
1342 : { "reference", GNE_ATTR_REFERENCE },
1343 : { "size", GNE_ATTR_SIZE },
1344 : { "forceSize", GNE_ATTR_FORCESIZE },
1345 : { "laneLength", GNE_ATTR_LANELENGTH },
1346 : { "saveFile", GNE_ATTR_SAVEFILE },
1347 : // mapped to additional elements on writing
1348 : { "fromBusStop", GNE_ATTR_FROM_BUSSTOP },
1349 : { "fromTrainStop", GNE_ATTR_FROM_TRAINSTOP },
1350 : { "fromContainerStop", GNE_ATTR_FROM_CONTAINERSTOP },
1351 : { "fromChargingStation", GNE_ATTR_FROM_CHARGINGSTATION },
1352 : { "fromParkingArea", GNE_ATTR_FROM_PARKINGAREA },
1353 : { "fromRoute", GNE_ATTR_FROM_ROUTE },
1354 : { "isRoundabout", GNE_ATTR_IS_ROUNDABOUT },
1355 : { "frontElement", GNE_ATTR_FRONTELEMENT },
1356 : { "edgesWithin", GNE_ATTR_EDGES_WITHIN },
1357 : { "noCommonAttributes", GNE_ATTR_NOCOMMON },
1358 : // 'all' is a reserved keyword when configuring attribute filters and must not occur as an attribute name
1359 :
1360 : { "carriageLength", SUMO_ATTR_CARRIAGE_LENGTH },
1361 : { "locomotiveLength", SUMO_ATTR_LOCOMOTIVE_LENGTH },
1362 : { "carriageGap", SUMO_ATTR_CARRIAGE_GAP },
1363 : { "carriageDoors", SUMO_ATTR_CARRIAGE_DOORS },
1364 :
1365 : { "targetLanes", SUMO_ATTR_TARGETLANE },
1366 : { "crossing", SUMO_ATTR_CROSSING },
1367 :
1368 : { "xmlns:xsi", SUMO_ATTR_XMLNS },
1369 : { "xsi:noNamespaceSchemaLocation", SUMO_ATTR_SCHEMA_LOCATION },
1370 :
1371 : // @name RNG state saving attributes
1372 : // @{
1373 : { "routeHandler", SUMO_ATTR_RNG_ROUTEHANDLER },
1374 : { "insertionControl", SUMO_ATTR_RNG_INSERTIONCONTROL },
1375 : { "device", SUMO_ATTR_RNG_DEVICE },
1376 : { "device.btreceiver", SUMO_ATTR_RNG_DEVICE_BT },
1377 : { "device.toc", SUMO_ATTR_RNG_DEVICE_TOC },
1378 : { "driverState", SUMO_ATTR_RNG_DRIVERSTATE },
1379 : // @}
1380 :
1381 : // @name further state saving attributes
1382 : // @{
1383 : { "bikeSpeed", SUMO_ATTR_BIKESPEED },
1384 : { "pastSpeed", SUMO_ATTR_PASTSPEED },
1385 : { "pastBikeSpeed", SUMO_ATTR_PASTBIKESPEED },
1386 : // @}
1387 :
1388 : //@name meso edge type attributes
1389 : // @{
1390 : { "tauff", SUMO_ATTR_MESO_TAUFF },
1391 : { "taufj", SUMO_ATTR_MESO_TAUFJ },
1392 : { "taujf", SUMO_ATTR_MESO_TAUJF },
1393 : { "taujj", SUMO_ATTR_MESO_TAUJJ },
1394 : { "junctionControl", SUMO_ATTR_MESO_JUNCTION_CONTROL },
1395 : { "tlsPenalty", SUMO_ATTR_MESO_TLS_PENALTY },
1396 : { "tlsFlowPenalty", SUMO_ATTR_MESO_TLS_FLOW_PENALTY },
1397 : { "minorPenalty", SUMO_ATTR_MESO_MINOR_PENALTY },
1398 : { "overtaking", SUMO_ATTR_MESO_OVERTAKING },
1399 : // @}
1400 :
1401 : // Other
1402 : { "", SUMO_ATTR_NOTHING } //< must be the last one
1403 : };
1404 :
1405 :
1406 : const std::string SUMO_PARAM_ORIGID("origId");
1407 : const std::string SUMO_PARAM_REMOVED_NODES("removedNodeIds");
1408 :
1409 :
1410 : StringBijection<SumoXMLNodeType>::Entry SUMOXMLDefinitions::sumoNodeTypeValues[] = {
1411 : {"traffic_light", SumoXMLNodeType::TRAFFIC_LIGHT},
1412 : {"traffic_light_unregulated", SumoXMLNodeType::TRAFFIC_LIGHT_NOJUNCTION},
1413 : {"traffic_light_right_on_red", SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED},
1414 : {"rail_signal", SumoXMLNodeType::RAIL_SIGNAL},
1415 : {"rail_crossing", SumoXMLNodeType::RAIL_CROSSING},
1416 : {"priority", SumoXMLNodeType::PRIORITY},
1417 : {"priority_stop", SumoXMLNodeType::PRIORITY_STOP},
1418 : {"right_before_left", SumoXMLNodeType::RIGHT_BEFORE_LEFT},
1419 : {"left_before_right", SumoXMLNodeType::LEFT_BEFORE_RIGHT},
1420 : {"allway_stop", SumoXMLNodeType::ALLWAY_STOP},
1421 : {"zipper", SumoXMLNodeType::ZIPPER},
1422 : {"district", SumoXMLNodeType::DISTRICT},
1423 : {"unregulated", SumoXMLNodeType::NOJUNCTION},
1424 : {"internal", SumoXMLNodeType::INTERNAL},
1425 : {"dead_end", SumoXMLNodeType::DEAD_END},
1426 : {"DEAD_END", SumoXMLNodeType::DEAD_END_DEPRECATED},
1427 : {"unknown", SumoXMLNodeType::UNKNOWN} //< must be the last one
1428 : };
1429 :
1430 :
1431 : StringBijection<SumoXMLEdgeFunc>::Entry SUMOXMLDefinitions::sumoEdgeFuncValues[] = {
1432 : {"unknown", SumoXMLEdgeFunc::UNKNOWN},
1433 : {"normal", SumoXMLEdgeFunc::NORMAL},
1434 : {"connector", SumoXMLEdgeFunc::CONNECTOR},
1435 : {"crossing", SumoXMLEdgeFunc::CROSSING},
1436 : {"walkingarea", SumoXMLEdgeFunc::WALKINGAREA},
1437 : {"internal", SumoXMLEdgeFunc::INTERNAL} //< must be the last one
1438 : };
1439 :
1440 :
1441 : StringBijection<LaneSpreadFunction>::Entry SUMOXMLDefinitions::laneSpreadFunctionValues[] = {
1442 : {"right", LaneSpreadFunction::RIGHT }, // default: geometry is left edge border, lanes flare to the right
1443 : {"roadCenter", LaneSpreadFunction::ROADCENTER }, // geometry is center of the bidirectional road
1444 : {"center", LaneSpreadFunction::CENTER } // geometry is center of the edge (must be the last one)
1445 : };
1446 :
1447 : StringBijection<ParkingType>::Entry SUMOXMLDefinitions::parkingTypeValues[] = {
1448 : {"0", ParkingType::ONROAD }, // default: park on the street
1449 : {"1", ParkingType::OFFROAD }, // parking off the street
1450 : {"opportunistic", ParkingType::OPPORTUNISTIC } // park off the street if there is an opportunity for it
1451 : };
1452 :
1453 : StringBijection<ChargeType>::Entry SUMOXMLDefinitions::chargeTypeValues[] = {
1454 : {"normal", ChargeType::NORMAL }, // default: either connected with a wire or charged by induction
1455 : {"battery-exchange", ChargeType::BATTERY_ECHANGE}, // battery echange
1456 : {"fuel", ChargeType::FUEL } // use fuel for charging
1457 : };
1458 :
1459 : StringBijection<RightOfWay>::Entry SUMOXMLDefinitions::rightOfWayValuesInitializer[] = {
1460 : {"edgePriority", RightOfWay::EDGEPRIORITY }, // use only edge priority values
1461 : {"mixedPriority", RightOfWay::MIXEDPRIORITY }, // use the default behavior but encode this explicitly (only needed for overriding the NEMA fallback behavior)
1462 : {"allwayStop", RightOfWay::ALLWAYSTOP }, // only used for setting the fall-back behavior of TLS-off
1463 : {"default", RightOfWay::DEFAULT } // default (must be the last one)
1464 : };
1465 :
1466 : StringBijection<FringeType>::Entry SUMOXMLDefinitions::fringeTypeValuesInitializer[] = {
1467 : {"outer", FringeType::OUTER },
1468 : {"inner", FringeType::INNER },
1469 : {"default", FringeType::DEFAULT } // default (must be the last one)
1470 : };
1471 :
1472 : StringBijection<RoundaboutType>::Entry SUMOXMLDefinitions::roundaboutTypeValuesInitializer[] = {
1473 : {"1", RoundaboutType::YES },
1474 : {"0", RoundaboutType::NO },
1475 : {"default", RoundaboutType::DEFAULT } // default (must be the last one)
1476 : };
1477 :
1478 : StringBijection<PersonMode>::Entry SUMOXMLDefinitions::personModeValuesInitializer[] = {
1479 : {"none", PersonMode::NONE},
1480 : {"walkForward", PersonMode::WALK_FORWARD},
1481 : {"walkBackward", PersonMode::WALK_BACKWARD},
1482 : {"walk", PersonMode::WALK},
1483 : {"bicycle", PersonMode::BICYCLE },
1484 : {"car", PersonMode::CAR },
1485 : {"taxi", PersonMode::TAXI },
1486 : {"public", PersonMode::PUBLIC} // (must be the last one)
1487 : };
1488 :
1489 : StringBijection<LinkState>::Entry SUMOXMLDefinitions::linkStateValues[] = {
1490 : { "G", LINKSTATE_TL_GREEN_MAJOR },
1491 : { "g", LINKSTATE_TL_GREEN_MINOR },
1492 : { "r", LINKSTATE_TL_RED },
1493 : { "u", LINKSTATE_TL_REDYELLOW },
1494 : { "Y", LINKSTATE_TL_YELLOW_MAJOR },
1495 : { "y", LINKSTATE_TL_YELLOW_MINOR },
1496 : { "o", LINKSTATE_TL_OFF_BLINKING },
1497 : { "O", LINKSTATE_TL_OFF_NOSIGNAL },
1498 : { "M", LINKSTATE_MAJOR },
1499 : { "m", LINKSTATE_MINOR },
1500 : { "=", LINKSTATE_EQUAL },
1501 : { "s", LINKSTATE_STOP },
1502 : { "w", LINKSTATE_ALLWAY_STOP },
1503 : { "Z", LINKSTATE_ZIPPER },
1504 : { "-", LINKSTATE_DEADEND } //< must be the last one
1505 : };
1506 :
1507 : const char SUMOXMLDefinitions::AllowedTLS_linkStatesInitializer[] = {
1508 : LINKSTATE_TL_GREEN_MAJOR,
1509 : LINKSTATE_TL_GREEN_MINOR,
1510 : LINKSTATE_STOP, // used for SumoXMLNodeType::TRAFFIC_LIGHT_RIGHT_ON_RED
1511 : LINKSTATE_TL_RED,
1512 : LINKSTATE_TL_REDYELLOW,
1513 : LINKSTATE_TL_YELLOW_MAJOR,
1514 : LINKSTATE_TL_YELLOW_MINOR,
1515 : LINKSTATE_TL_OFF_BLINKING,
1516 : LINKSTATE_TL_OFF_NOSIGNAL
1517 : };
1518 : const std::string SUMOXMLDefinitions::ALLOWED_TLS_LINKSTATES(AllowedTLS_linkStatesInitializer, 9);
1519 :
1520 : StringBijection<LinkDirection>::Entry SUMOXMLDefinitions::linkDirectionValues[] = {
1521 : { "s", LinkDirection::STRAIGHT },
1522 : { "t", LinkDirection::TURN },
1523 : { "T", LinkDirection::TURN_LEFTHAND },
1524 : { "l", LinkDirection::LEFT },
1525 : { "r", LinkDirection::RIGHT },
1526 : { "L", LinkDirection::PARTLEFT },
1527 : { "R", LinkDirection::PARTRIGHT },
1528 : { "invalid", LinkDirection::NODIR } //< must be the last one
1529 : };
1530 :
1531 :
1532 : StringBijection<TrafficLightType>::Entry SUMOXMLDefinitions::trafficLightTypesValues[] = {
1533 : { "static", TrafficLightType::STATIC },
1534 : { "railSignal", TrafficLightType::RAIL_SIGNAL },
1535 : { "railCrossing", TrafficLightType::RAIL_CROSSING },
1536 : { "actuated", TrafficLightType::ACTUATED },
1537 : { "NEMA", TrafficLightType::NEMA },
1538 : { "delay_based", TrafficLightType::DELAYBASED },
1539 : { "sotl_phase", TrafficLightType::SOTL_PHASE },
1540 : { "sotl_platoon", TrafficLightType::SOTL_PLATOON },
1541 : { "sotl_request", TrafficLightType::SOTL_REQUEST },
1542 : { "sotl_wave", TrafficLightType::SOTL_WAVE },
1543 : { "sotl_marching", TrafficLightType::SOTL_MARCHING },
1544 : { "swarm", TrafficLightType::SWARM_BASED },
1545 : { "deterministic", TrafficLightType::HILVL_DETERMINISTIC },
1546 : { "off", TrafficLightType::OFF },
1547 : { "<invalid>", TrafficLightType::INVALID } //< must be the last one
1548 : };
1549 :
1550 :
1551 : StringBijection<TrafficLightLayout>::Entry SUMOXMLDefinitions::trafficLightLayoutValues[] = {
1552 : { "opposites", TrafficLightLayout::OPPOSITES },
1553 : { "incoming", TrafficLightLayout::INCOMING },
1554 : { "alternateOneWay", TrafficLightLayout::ALTERNATE_ONEWAY },
1555 : { "default", TrafficLightLayout::DEFAULT } //< must be the last one
1556 : };
1557 :
1558 : StringBijection<InsertionCheck>::Entry SUMOXMLDefinitions::insertionCheckValues[] = {
1559 : { "none", InsertionCheck::NONE },
1560 : { "collision", InsertionCheck::COLLISION },
1561 : { "leaderGap", InsertionCheck::LEADER_GAP },
1562 : { "followerGap", InsertionCheck::FOLLOWER_GAP },
1563 : { "junction", InsertionCheck::JUNCTION },
1564 : { "stop", InsertionCheck::STOP },
1565 : { "arrivalSpeed", InsertionCheck::ARRIVAL_SPEED },
1566 : { "oncomingTrain", InsertionCheck::ONCOMING_TRAIN },
1567 : { "speedLimit", InsertionCheck::SPEED_LIMIT },
1568 : { "pedestrian", InsertionCheck::PEDESTRIAN },
1569 : { "bidi", InsertionCheck::BIDI },
1570 : { "laneChange", InsertionCheck::LANECHANGE },
1571 : { "all", InsertionCheck::ALL } //< must be the last one
1572 : };
1573 :
1574 : StringBijection<LaneChangeModel>::Entry SUMOXMLDefinitions::laneChangeModelValues[] = {
1575 : { "DK2008", LaneChangeModel::DK2008 },
1576 : { "LC2013", LaneChangeModel::LC2013 },
1577 : { "LC2013_CC", LaneChangeModel::LC2013_CC },
1578 : { "SL2015", LaneChangeModel::SL2015 },
1579 : { "default", LaneChangeModel::DEFAULT } //< must be the last one
1580 : };
1581 :
1582 : StringBijection<SumoXMLTag>::Entry SUMOXMLDefinitions::carFollowModelValues[] = {
1583 : { "IDM", SUMO_TAG_CF_IDM },
1584 : { "IDMM", SUMO_TAG_CF_IDMM },
1585 : { "Krauss", SUMO_TAG_CF_KRAUSS },
1586 : { "KraussPS", SUMO_TAG_CF_KRAUSS_PLUS_SLOPE },
1587 : { "KraussOrig1", SUMO_TAG_CF_KRAUSS_ORIG1 },
1588 : { "KraussX", SUMO_TAG_CF_KRAUSSX }, // experimental extensions to the Krauss model
1589 : { "EIDM", SUMO_TAG_CF_EIDM },
1590 : { "SmartSK", SUMO_TAG_CF_SMART_SK },
1591 : { "Daniel1", SUMO_TAG_CF_DANIEL1 },
1592 : { "PWagner2009", SUMO_TAG_CF_PWAGNER2009 },
1593 : { "BKerner", SUMO_TAG_CF_BKERNER },
1594 : { "Rail", SUMO_TAG_CF_RAIL },
1595 : { "CC", SUMO_TAG_CF_CC },
1596 : { "ACC", SUMO_TAG_CF_ACC },
1597 : { "CACC", SUMO_TAG_CF_CACC },
1598 : { "W99", SUMO_TAG_CF_W99 },
1599 : { "Wiedemann", SUMO_TAG_CF_WIEDEMANN } //< must be the last one
1600 : };
1601 :
1602 : StringBijection<LaneChangeAction>::Entry SUMOXMLDefinitions::laneChangeActionValues[] = {
1603 : { "stay", LCA_STAY },
1604 : { "left", LCA_LEFT },
1605 : { "right", LCA_RIGHT },
1606 : { "strategic", LCA_STRATEGIC },
1607 : { "cooperative", LCA_COOPERATIVE },
1608 : { "speedGain", LCA_SPEEDGAIN },
1609 : { "keepRight", LCA_KEEPRIGHT },
1610 : { "sublane", LCA_SUBLANE },
1611 : { "traci", LCA_TRACI },
1612 : { "urgent", LCA_URGENT },
1613 : { "overlapping", LCA_OVERLAPPING },
1614 : { "blocked", LCA_BLOCKED },
1615 : { "amBL", LCA_AMBLOCKINGLEADER },
1616 : { "amBF", LCA_AMBLOCKINGFOLLOWER },
1617 : { "amBB", LCA_AMBACKBLOCKER },
1618 : { "amBBS", LCA_AMBACKBLOCKER_STANDING },
1619 : { "MR", LCA_MRIGHT },
1620 : { "ML", LCA_MLEFT },
1621 : { "unknown", LCA_UNKNOWN } //< must be the last one
1622 : };
1623 :
1624 : StringBijection<TrainType>::Entry SUMOXMLDefinitions::trainTypeValues[] = {
1625 : { "custom", TrainType::CUSTOM },
1626 : { "NGT400", TrainType::NGT400 },
1627 : { "NGT400_16", TrainType::NGT400_16 },
1628 : { "RB425", TrainType::RB425 },
1629 : { "RB628", TrainType::RB628 },
1630 : { "ICE1", TrainType::ICE1 },
1631 : { "REDosto7", TrainType::REDOSTO7 },
1632 : { "Freight", TrainType::FREIGHT },
1633 : { "ICE3", TrainType::ICE3 },
1634 : { "MireoPlusB", TrainType::MIREOPLUSB },
1635 : { "MireoPlusH", TrainType::MIREOPLUSH }
1636 : };
1637 :
1638 : StringBijection<POIIcon>::Entry SUMOXMLDefinitions::POIIconValues[] = {
1639 : {"pin", POIIcon::PIN},
1640 : {"tree", POIIcon::NATURE},
1641 : {"hotel", POIIcon::HOTEL},
1642 : {"fuel", POIIcon::FUEL},
1643 : {"charging_station", POIIcon::CHARGING_STATION},
1644 : {"", POIIcon::NONE} //< must be the last one
1645 : };
1646 :
1647 : StringBijection<ExcludeEmpty>::Entry SUMOXMLDefinitions::excludeEmptyValues[] = {
1648 : {"true", ExcludeEmpty::TRUES},
1649 : {"false", ExcludeEmpty::FALSES},
1650 : {"defaults", ExcludeEmpty::DEFAULTS} //< must be the last one
1651 : };
1652 :
1653 : StringBijection<ReferencePosition>::Entry SUMOXMLDefinitions::referencePositionValues[] = {
1654 : {"left", ReferencePosition::LEFT},
1655 : {"right", ReferencePosition::RIGHT},
1656 : {"center", ReferencePosition::CENTER} //< must be the last one
1657 : };
1658 :
1659 : StringBijection<MeanDataType>::Entry SUMOXMLDefinitions::meanDataTypeValues[] = {
1660 : {"traffic", MeanDataType::TRAFFIC},
1661 : {"emissions", MeanDataType::EMISSIONS},
1662 : {"harmonoise", MeanDataType::HARMONOISE},
1663 : {"amitran", MeanDataType::AMITRAN},
1664 : {"", MeanDataType::DEFAULT} //< must be the last one
1665 : };
1666 :
1667 : StringBijection<XMLFileExtension>::Entry SUMOXMLDefinitions::XMLFileExtensionValues[] = {
1668 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), XMLFileExtension::XML},
1669 : {TL("All files") + std::string(" (*)"), XMLFileExtension::ALL} //< must be the last one
1670 : };
1671 :
1672 : StringBijection<TXTFileExtension>::Entry SUMOXMLDefinitions::TXTFileExtensionValues[] = {
1673 : {TL("Plain text files") + std::string(" (*.txt)"), TXTFileExtension::TXT},
1674 : {TL("All files") + std::string(" (*)"), TXTFileExtension::ALL} //< must be the last one
1675 : };
1676 :
1677 : StringBijection<CSVFileExtension>::Entry SUMOXMLDefinitions::CSVFileExtensionValues[] = {
1678 : {TL("CSV files") + std::string(" (*.csv)"), CSVFileExtension::CSV},
1679 : {TL("All files") + std::string(" (*)"), CSVFileExtension::ALL} //< must be the last one
1680 : };
1681 :
1682 : StringBijection<OSGFileExtension>::Entry SUMOXMLDefinitions::OSGFileExtensionValues[] = {
1683 : {TL("Open scene graph files") + std::string(" (*.osg)"), OSGFileExtension::OSG},
1684 : {TL("All files") + std::string(" (*)"), OSGFileExtension::ALL} //< must be the last one
1685 : };
1686 :
1687 : StringBijection<ImageFileExtension>::Entry SUMOXMLDefinitions::imageFileExtensionValues[] = {
1688 : {TL("All Image Files") + std::string(" (*.gif,*.bmp,*.xpm,*.pcx,*.ico,*.rgb,*.xbm,*.tga,*.png,*.jpg,*.jpeg,*.tif,*.tiff,*.ps,*.eps,*.pdf,*.svg,*.tex,*.pgf)"), ImageFileExtension::IMG},
1689 : {TL("GIF Image") + std::string(" (*.gif)"), ImageFileExtension::GIF},
1690 : {TL("BMP Image") + std::string(" (*.bmp)"), ImageFileExtension::BMP},
1691 : {TL("XPM Image") + std::string(" (*.xpm)"), ImageFileExtension::XPM},
1692 : {TL("PCX Image") + std::string(" (*.pcx)"), ImageFileExtension::PCX},
1693 : {TL("ICO Image") + std::string(" (*.ico)"), ImageFileExtension::ICO},
1694 : {TL("RGB Image") + std::string(" (*.rgb)"), ImageFileExtension::RGB},
1695 : {TL("XBM Image") + std::string(" (*.xbm)"), ImageFileExtension::XBM},
1696 : {TL("TARGA Image") + std::string(" (*.tga)"), ImageFileExtension::TGA},
1697 : {TL("PNG Image") + std::string(" (*.png)"), ImageFileExtension::PNG},
1698 : {TL("JPEG Image") + std::string(" (*.jpg,*.jpeg)"), ImageFileExtension::JPG},
1699 : {TL("TIFF Image") + std::string(" (*.tif,*.tiff)"), ImageFileExtension::TIF},
1700 : {TL("Postscript") + std::string(" (*.ps)"), ImageFileExtension::PS},
1701 : {TL("Encapsulated Postscript") + std::string(" (*.eps)"), ImageFileExtension::EPS},
1702 : {TL("Portable Document Format") + std::string(" (*.pdf)"), ImageFileExtension::PDF},
1703 : {TL("Scalable Vector Graphics") + std::string(" (*.svg)"), ImageFileExtension::SVG},
1704 : {TL("LATEX text strings") + std::string(" (*.tex)"), ImageFileExtension::TEX},
1705 : {TL("Portable LaTeX Graphics") + std::string(" (*.pgf)"), ImageFileExtension::PGF},
1706 : {TL("All Files") + std::string(" (*)"), ImageFileExtension::ALL} //< must be the last one
1707 : };
1708 :
1709 : StringBijection<ImageVideoFileExtension>::Entry SUMOXMLDefinitions::imageVideoFileExtensionValues[] = {
1710 : {TL("All Image and Video Files") + std::string(" (*.gif,*.bmp,*.xpm,*.pcx,*.ico,*.rgb,*.xbm,*.tga,*.png,*.jpg,*.jpeg,*.tif,*.tiff,*.ps,*.eps,*.pdf,*.svg,*.tex,*.pgf,*.h264,*.hevc,*.mp4)"), ImageVideoFileExtension::IMG},
1711 : {TL("All Video Files") + std::string(" (*.h264,*.hevc,*.mp4)"), ImageVideoFileExtension::VIDEO},
1712 : {TL("G264 Video") + std::string(" (*.h264)"), ImageVideoFileExtension::H264},
1713 : {TL("HEVC Video") + std::string(" (*.hevc)"), ImageVideoFileExtension::HEVC},
1714 : {TL("MP4 Video") + std::string(" (*.mp4)"), ImageVideoFileExtension::MP4},
1715 : {TL("GIF Image") + std::string(" (*.gif)"), ImageVideoFileExtension::GIF},
1716 : {TL("BMP Image") + std::string(" (*.bmp)"), ImageVideoFileExtension::BMP},
1717 : {TL("XPM Image") + std::string(" (*.xpm)"), ImageVideoFileExtension::XPM},
1718 : {TL("PCX Image") + std::string(" (*.pcx)"), ImageVideoFileExtension::PCX},
1719 : {TL("ICO Image") + std::string("") + std::string(" (*.ico)"), ImageVideoFileExtension::ICO},
1720 : {TL("RGB Image") + std::string(" (*.rgb)"), ImageVideoFileExtension::RGB},
1721 : {TL("XBM Image") + std::string(" (*.xbm)"), ImageVideoFileExtension::XBM},
1722 : {TL("TARGA Image") + std::string(" (*.tga)"), ImageVideoFileExtension::TGA},
1723 : {TL("PNG Image") + std::string(" (*.png)"), ImageVideoFileExtension::PNG},
1724 : {TL("JPEG Image") + std::string(" (*.jpg,*.jpeg)"), ImageVideoFileExtension::JPG},
1725 : {TL("TIFF Image") + std::string(" (*.tif,*.tiff)"), ImageVideoFileExtension::TIF},
1726 : {TL("Postscript") + std::string(" (*.ps)"), ImageVideoFileExtension::PS},
1727 : {TL("Encapsulated Postscript") + std::string(" (*.eps)"), ImageVideoFileExtension::EPS},
1728 : {TL("Portable Document Format") + std::string(" (*.pdf)"), ImageVideoFileExtension::PDF},
1729 : {TL("Scalable Vector Graphics") + std::string(" (*.svg)"), ImageVideoFileExtension::SVG},
1730 : {TL("LATEX text strings") + std::string(" (*.tex)"), ImageVideoFileExtension::TEX},
1731 : {TL("Portable") + std::string(" LaTeX Graphics (*.pgf)"), ImageVideoFileExtension::PGF},
1732 : {TL("All Files") + std::string(" (*)"), ImageVideoFileExtension::ALL} //< must be the last one
1733 : };
1734 :
1735 : StringBijection<OutputFileExtension>::Entry SUMOXMLDefinitions::outputFileExtensionValues[] = {
1736 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), OutputFileExtension::XML},
1737 : {TL("Plain text") + std::string(" files (*.txt)"), OutputFileExtension::TXT},
1738 : {TL("All files") + std::string(" (*)"), OutputFileExtension::ALL} //< must be the last one
1739 : };
1740 :
1741 : StringBijection<ViewSettingsFileExtension>::Entry SUMOXMLDefinitions::viewSettingsFileExtensionValues[] = {
1742 : {TL("View settings files") + std::string(" (*.xml,*.xml.gz)"), ViewSettingsFileExtension::XML},
1743 : {TL("All files") + std::string(" (*)"), ViewSettingsFileExtension::ALL} //< must be the last one
1744 : };
1745 :
1746 : StringBijection<StateFileExtension>::Entry SUMOXMLDefinitions::stateFileExtensionValues[] = {
1747 : {TL("State GZipped XML files") + std::string(" (*.xml.gz)"), StateFileExtension::XML_GZ},
1748 : {TL("XML files") + std::string(" (*.xml)"), StateFileExtension::XML},
1749 : {TL("All files") + std::string(" (*)"), StateFileExtension::ALL} //< must be the last one
1750 : };
1751 :
1752 : StringBijection<SumoConfigFileExtension>::Entry SUMOXMLDefinitions::sumoConfigFileExtensionValues[] = {
1753 : {TL("Sumo config") + std::string(" files (*.sumocfg)"), SumoConfigFileExtension::SUMOCONF},
1754 : {TL("XML files") + std::string(" (*.xml)"), SumoConfigFileExtension::XML},
1755 : {TL("All files") + std::string(" (*)"), SumoConfigFileExtension::ALL} //< must be the last one
1756 : };
1757 :
1758 : StringBijection<NeteditConfigFileExtension>::Entry SUMOXMLDefinitions::neteditConfigFileExtensionValues[] = {
1759 : {TL("Netedit config files") + std::string(" (*.netecfg)"), NeteditConfigFileExtension::NETECFG},
1760 : {TL("XML files") + std::string(" (*.xml)"), NeteditConfigFileExtension::XML},
1761 : {TL("All files") + std::string(" (*)"), NeteditConfigFileExtension::ALL} //< must be the last one
1762 : };
1763 :
1764 : StringBijection<NetconvertConfigFileExtension>::Entry SUMOXMLDefinitions::netconvertConfigFileExtensionValues[] = {
1765 : {TL("Netconvert config files") + std::string(" (*.netccfg)"), NetconvertConfigFileExtension::NETCCFG},
1766 : {TL("XML files") + std::string(" (*.xml"), NetconvertConfigFileExtension::XML},
1767 : {TL("All files") + std::string(" (*)"), NetconvertConfigFileExtension::ALL} //< must be the last one
1768 : };
1769 :
1770 : StringBijection<OSMFileExtension>::Entry SUMOXMLDefinitions::osmFileExtensionValues[] = {
1771 : {TL("OSM network files") + std::string(" (*.osm,*.osm.gz)"), OSMFileExtension::OSM},
1772 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), OSMFileExtension::XML},
1773 : {TL("All files") + std::string(" (*)"), OSMFileExtension::ALL} //< must be the last one
1774 : };
1775 :
1776 : StringBijection<NetFileExtension>::Entry SUMOXMLDefinitions::netFileExtensionValues[] = {
1777 : {TL("SUMO network files") + std::string(" (*.net.xml,*.net.xml.gz)"), NetFileExtension::NET_XML},
1778 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), NetFileExtension::XML},
1779 : {TL("All files") + std::string(" (*)"), NetFileExtension::ALL} //< must be the last one
1780 : };
1781 :
1782 : StringBijection<TLSFileExtension>::Entry SUMOXMLDefinitions::TLSFileExtensionValues[] = {
1783 : {TL("TLS files") + std::string(" (*.tll.xml,*.tll.xml.gz)"), TLSFileExtension::TTL_XML},
1784 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), TLSFileExtension::XML},
1785 : {TL("All files") + std::string(" (*)"), TLSFileExtension::ALL} //< must be the last one
1786 : };
1787 :
1788 : StringBijection<JunctionFileExtension>::Entry SUMOXMLDefinitions::junctionFileExtensionValues[] = {
1789 : {TL("Junction files") + std::string(" (*.nod.xml,*.nod.xml.gz)"), JunctionFileExtension::NOD_XML},
1790 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), JunctionFileExtension::XML},
1791 : {TL("All files") + std::string(" (*)"), JunctionFileExtension::ALL} //< must be the last one
1792 : };
1793 :
1794 : StringBijection<EdgeTypeFileExtension>::Entry SUMOXMLDefinitions::edgeTypeFileExtensionValues[] = {
1795 : {TL("Edge type files") + std::string(" (*.typ.xml,*.typ.xml.gz)"), EdgeTypeFileExtension::TYP_XML},
1796 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), EdgeTypeFileExtension::XML},
1797 : {TL("All files") + std::string(" (*)"), EdgeTypeFileExtension::ALL} //< must be the last one
1798 : };
1799 :
1800 : StringBijection<AdditionalFileExtension>::Entry SUMOXMLDefinitions::additionalFileExtensionValues[] = {
1801 : {TL("Additional files") + std::string(" (*.add.xml,*.add.xml.gz)"), AdditionalFileExtension::ADD_XML},
1802 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), AdditionalFileExtension::XML},
1803 : {TL("All files") + std::string(" (*)"), AdditionalFileExtension::ALL} //< must be the last one
1804 : };
1805 :
1806 : StringBijection<ShapesFileExtension>::Entry SUMOXMLDefinitions::shapesFileExtensionValues[] = {
1807 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), ShapesFileExtension::XML},
1808 : {TL("All files") + std::string(" (*)"), ShapesFileExtension::ALL} //< must be the last one
1809 : };
1810 :
1811 : StringBijection<RouteFileExtension>::Entry SUMOXMLDefinitions::routeFileExtensionsValues[] = {
1812 : {TL("Route files") + std::string(" (*.rou.xml,*.rou.xml.gz)"), RouteFileExtension::ROU_XML},
1813 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), RouteFileExtension::XML},
1814 : {TL("All files") + std::string(" (*)"), RouteFileExtension::ALL} //< must be the last one
1815 : };
1816 :
1817 : StringBijection<EdgeDataFileExtension>::Entry SUMOXMLDefinitions::edgeDataFileExtensionsValues[] = {
1818 : {TL("Edge data files") + std::string(" (*.xml,*.xml.gz)"), EdgeDataFileExtension::XML},
1819 : {TL("All files") + std::string(" (*)"), EdgeDataFileExtension::ALL} //< must be the last one
1820 : };
1821 :
1822 : StringBijection<MeanDataFileExtension>::Entry SUMOXMLDefinitions::meanDataFileExtensionsValues[] = {
1823 : {TL("Mean data files") + std::string(" (*.add.xml,*.add.xml.gz)"), MeanDataFileExtension::ADD},
1824 : {TL("XML files") + std::string(" (*.xml,*.xml.gz)"), MeanDataFileExtension::XML},
1825 : {TL("All files") + std::string(" (*)"), MeanDataFileExtension::ALL} //< must be the last one
1826 : };
1827 :
1828 : SequentialStringBijection SUMOXMLDefinitions::Tags(
1829 : SUMOXMLDefinitions::tags, SUMO_TAG_NOTHING);
1830 :
1831 : SequentialStringBijection SUMOXMLDefinitions::Attrs(
1832 : SUMOXMLDefinitions::attrs, SUMO_ATTR_NOTHING);
1833 :
1834 : StringBijection<SumoXMLNodeType> SUMOXMLDefinitions::NodeTypes(
1835 : SUMOXMLDefinitions::sumoNodeTypeValues, SumoXMLNodeType::UNKNOWN);
1836 :
1837 : StringBijection<SumoXMLEdgeFunc> SUMOXMLDefinitions::EdgeFunctions(
1838 : SUMOXMLDefinitions::sumoEdgeFuncValues, SumoXMLEdgeFunc::INTERNAL);
1839 :
1840 : StringBijection<LaneSpreadFunction> SUMOXMLDefinitions::LaneSpreadFunctions(
1841 : SUMOXMLDefinitions::laneSpreadFunctionValues, LaneSpreadFunction::CENTER);
1842 :
1843 : StringBijection<ParkingType> SUMOXMLDefinitions::ParkingTypes(
1844 : SUMOXMLDefinitions::parkingTypeValues, ParkingType::OPPORTUNISTIC);
1845 :
1846 : StringBijection<ChargeType> SUMOXMLDefinitions::ChargeTypes(
1847 : SUMOXMLDefinitions::chargeTypeValues, ChargeType::FUEL);
1848 :
1849 : StringBijection<RightOfWay> SUMOXMLDefinitions::RightOfWayValues(
1850 : SUMOXMLDefinitions::rightOfWayValuesInitializer, RightOfWay::DEFAULT);
1851 :
1852 : StringBijection<FringeType> SUMOXMLDefinitions::FringeTypeValues(
1853 : SUMOXMLDefinitions::fringeTypeValuesInitializer, FringeType::DEFAULT);
1854 :
1855 : StringBijection<RoundaboutType> SUMOXMLDefinitions::RoundaboutTypeValues(
1856 : SUMOXMLDefinitions::roundaboutTypeValuesInitializer, RoundaboutType::DEFAULT);
1857 :
1858 : StringBijection<PersonMode> SUMOXMLDefinitions::PersonModeValues(
1859 : SUMOXMLDefinitions::personModeValuesInitializer, PersonMode::PUBLIC);
1860 :
1861 : StringBijection<LinkState> SUMOXMLDefinitions::LinkStates(
1862 : SUMOXMLDefinitions::linkStateValues, LINKSTATE_DEADEND);
1863 :
1864 : StringBijection<LinkDirection> SUMOXMLDefinitions::LinkDirections(
1865 : SUMOXMLDefinitions::linkDirectionValues, LinkDirection::NODIR);
1866 :
1867 : StringBijection<TrafficLightType> SUMOXMLDefinitions::TrafficLightTypes(
1868 : SUMOXMLDefinitions::trafficLightTypesValues, TrafficLightType::INVALID);
1869 :
1870 : StringBijection<TrafficLightLayout> SUMOXMLDefinitions::TrafficLightLayouts(
1871 : SUMOXMLDefinitions::trafficLightLayoutValues, TrafficLightLayout::DEFAULT);
1872 :
1873 : StringBijection<InsertionCheck> SUMOXMLDefinitions::InsertionChecks(
1874 : SUMOXMLDefinitions::insertionCheckValues, InsertionCheck::ALL);
1875 :
1876 : StringBijection<LaneChangeModel> SUMOXMLDefinitions::LaneChangeModels(
1877 : SUMOXMLDefinitions::laneChangeModelValues, LaneChangeModel::DEFAULT);
1878 :
1879 : StringBijection<SumoXMLTag> SUMOXMLDefinitions::CarFollowModels(
1880 : SUMOXMLDefinitions::carFollowModelValues, SUMO_TAG_CF_WIEDEMANN);
1881 :
1882 : StringBijection<LaneChangeAction> SUMOXMLDefinitions::LaneChangeActions(
1883 : SUMOXMLDefinitions::laneChangeActionValues, LCA_UNKNOWN);
1884 :
1885 : StringBijection<TrainType> SUMOXMLDefinitions::TrainTypes(
1886 : SUMOXMLDefinitions::trainTypeValues, TrainType::MIREOPLUSH);
1887 :
1888 : StringBijection<POIIcon> SUMOXMLDefinitions::POIIcons(
1889 : SUMOXMLDefinitions::POIIconValues, POIIcon::NONE, false);
1890 :
1891 : StringBijection<ExcludeEmpty> SUMOXMLDefinitions::ExcludeEmptys(
1892 : SUMOXMLDefinitions::excludeEmptyValues, ExcludeEmpty::DEFAULTS, false);
1893 :
1894 : StringBijection<ReferencePosition> SUMOXMLDefinitions::ReferencePositions(
1895 : SUMOXMLDefinitions::referencePositionValues, ReferencePosition::CENTER, false);
1896 :
1897 : StringBijection<MeanDataType> SUMOXMLDefinitions::MeanDataTypes(
1898 : SUMOXMLDefinitions::meanDataTypeValues, MeanDataType::DEFAULT, false);
1899 :
1900 : StringBijection<XMLFileExtension> SUMOXMLDefinitions::XMLFileExtensions(
1901 : SUMOXMLDefinitions::XMLFileExtensionValues, XMLFileExtension::ALL, false);
1902 :
1903 : StringBijection<TXTFileExtension> SUMOXMLDefinitions::TXTFileExtensions(
1904 : SUMOXMLDefinitions::TXTFileExtensionValues, TXTFileExtension::ALL, false);
1905 :
1906 : StringBijection<CSVFileExtension> SUMOXMLDefinitions::CSVFileExtensions(
1907 : SUMOXMLDefinitions::CSVFileExtensionValues, CSVFileExtension::ALL, false);
1908 :
1909 : StringBijection<OSGFileExtension> SUMOXMLDefinitions::OSGFileExtensions(
1910 : SUMOXMLDefinitions::OSGFileExtensionValues, OSGFileExtension::ALL, false);
1911 :
1912 : StringBijection<ImageFileExtension> SUMOXMLDefinitions::ImageFileExtensions(
1913 : SUMOXMLDefinitions::imageFileExtensionValues, ImageFileExtension::ALL, false);
1914 :
1915 : StringBijection<ImageVideoFileExtension> SUMOXMLDefinitions::ImageVideoFileExtensions(
1916 : SUMOXMLDefinitions::imageVideoFileExtensionValues, ImageVideoFileExtension::ALL, false);
1917 :
1918 : StringBijection<OutputFileExtension> SUMOXMLDefinitions::OutputFileExtensions(
1919 : SUMOXMLDefinitions::outputFileExtensionValues, OutputFileExtension::ALL, false);
1920 :
1921 : StringBijection<ViewSettingsFileExtension> SUMOXMLDefinitions::ViewSettingsFileExtensions(
1922 : SUMOXMLDefinitions::viewSettingsFileExtensionValues, ViewSettingsFileExtension::ALL, false);
1923 :
1924 : StringBijection<StateFileExtension> SUMOXMLDefinitions::StateFileExtensions(
1925 : SUMOXMLDefinitions::stateFileExtensionValues, StateFileExtension::ALL, false);
1926 :
1927 : StringBijection<SumoConfigFileExtension> SUMOXMLDefinitions::SumoConfigFileExtensions(
1928 : SUMOXMLDefinitions::sumoConfigFileExtensionValues, SumoConfigFileExtension::ALL, false);
1929 :
1930 : StringBijection<NeteditConfigFileExtension> SUMOXMLDefinitions::NeteditConfigFileExtensions(
1931 : SUMOXMLDefinitions::neteditConfigFileExtensionValues, NeteditConfigFileExtension::ALL, false);
1932 :
1933 : StringBijection<NetconvertConfigFileExtension> SUMOXMLDefinitions::NetconvertConfigFileExtensions(
1934 : SUMOXMLDefinitions::netconvertConfigFileExtensionValues, NetconvertConfigFileExtension::ALL, false);
1935 :
1936 : StringBijection<OSMFileExtension> SUMOXMLDefinitions::OSMFileExtensions(
1937 : SUMOXMLDefinitions::osmFileExtensionValues, OSMFileExtension::ALL, false);
1938 :
1939 : StringBijection<NetFileExtension> SUMOXMLDefinitions::NetFileExtensions(
1940 : SUMOXMLDefinitions::netFileExtensionValues, NetFileExtension::ALL, false);
1941 :
1942 : StringBijection<TLSFileExtension> SUMOXMLDefinitions::TLSFileExtensions(
1943 : SUMOXMLDefinitions::TLSFileExtensionValues, TLSFileExtension::ALL, false);
1944 :
1945 : StringBijection<JunctionFileExtension> SUMOXMLDefinitions::JunctionFileExtensions(
1946 : SUMOXMLDefinitions::junctionFileExtensionValues, JunctionFileExtension::ALL, false);
1947 :
1948 : StringBijection<EdgeTypeFileExtension> SUMOXMLDefinitions::EdgeTypeFileExtensions(
1949 : SUMOXMLDefinitions::edgeTypeFileExtensionValues, EdgeTypeFileExtension::ALL, false);
1950 :
1951 : StringBijection<AdditionalFileExtension> SUMOXMLDefinitions::AdditionalFileExtensions(
1952 : SUMOXMLDefinitions::additionalFileExtensionValues, AdditionalFileExtension::ALL, false);
1953 :
1954 : StringBijection<ShapesFileExtension> SUMOXMLDefinitions::ShapesFileExtensions(
1955 : SUMOXMLDefinitions::shapesFileExtensionValues, ShapesFileExtension::ALL, false);
1956 :
1957 : StringBijection<RouteFileExtension> SUMOXMLDefinitions::RouteFileExtensions(
1958 : SUMOXMLDefinitions::routeFileExtensionsValues, RouteFileExtension::ALL, false);
1959 :
1960 : StringBijection<EdgeDataFileExtension> SUMOXMLDefinitions::EdgeDataFileExtensions(
1961 : SUMOXMLDefinitions::edgeDataFileExtensionsValues, EdgeDataFileExtension::ALL, false);
1962 :
1963 : StringBijection<MeanDataFileExtension> SUMOXMLDefinitions::MeanDataFileExtensions(
1964 : SUMOXMLDefinitions::meanDataFileExtensionsValues, MeanDataFileExtension::ALL, false);
1965 :
1966 : std::string
1967 1200080 : SUMOXMLDefinitions::getJunctionIDFromInternalEdge(const std::string internalEdge) {
1968 : assert(internalEdge[0] == ':');
1969 1200080 : return internalEdge.substr(1, internalEdge.rfind('_') - 1);
1970 : }
1971 :
1972 :
1973 : std::string
1974 16938378 : SUMOXMLDefinitions::getEdgeIDFromLane(const std::string laneID) {
1975 16938378 : return laneID.substr(0, laneID.rfind('_'));
1976 : }
1977 :
1978 : int
1979 17679 : SUMOXMLDefinitions::getIndexFromLane(const std::string laneID) {
1980 35358 : return StringUtils::toInt(laneID.substr(laneID.rfind('_') + 1));
1981 : }
1982 :
1983 :
1984 : bool
1985 192259 : SUMOXMLDefinitions::isValidNetID(const std::string& value) {
1986 384518 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos && value[0] != ':';
1987 : }
1988 :
1989 :
1990 : bool
1991 745659 : SUMOXMLDefinitions::isValidVehicleID(const std::string& value) {
1992 1491310 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1993 : }
1994 :
1995 :
1996 : bool
1997 12745 : SUMOXMLDefinitions::isValidTypeID(const std::string& value) {
1998 25490 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
1999 : }
2000 :
2001 : bool
2002 0 : SUMOXMLDefinitions::isValidAdditionalID(const std::string& value) {
2003 0 : return (value.size() > 0) && value.find_first_of(" \t\n\r|\\'\";,<>&") == std::string::npos;
2004 : }
2005 :
2006 : bool
2007 0 : SUMOXMLDefinitions::isValidDetectorID(const std::string& value) {
2008 : // special case: ' ' allowed
2009 0 : return (value.size() > 0) && value.find_first_of("\t\n\r|\\'\";,<>&") == std::string::npos;
2010 : }
2011 :
2012 : bool
2013 1525 : SUMOXMLDefinitions::isValidAttribute(const std::string& value) {
2014 1525 : return value.find_first_of("\t\n\r&|\\'\"<>") == std::string::npos;
2015 : }
2016 :
2017 :
2018 : bool
2019 0 : SUMOXMLDefinitions::isValidFilename(const std::string& value) {
2020 0 : return (value.find_first_of("\t\n\r@$%^&|{}*'\";<>") == std::string::npos);
2021 : }
2022 :
2023 :
2024 : bool
2025 0 : SUMOXMLDefinitions::isValidListOfNetIDs(const std::string& value) {
2026 0 : const std::vector<std::string>& typeIDs = StringTokenizer(value).getVector();
2027 0 : if (typeIDs.empty()) {
2028 : return false;
2029 : } else {
2030 : // check that gives IDs are valid
2031 0 : for (auto i : typeIDs) {
2032 0 : if (!SUMOXMLDefinitions::isValidNetID(i)) {
2033 : return false;
2034 : }
2035 : }
2036 0 : return true;
2037 : }
2038 0 : }
2039 :
2040 :
2041 : bool
2042 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::string& value) {
2043 0 : return isValidListOfTypeID(StringTokenizer(value).getVector());
2044 : }
2045 :
2046 :
2047 : bool
2048 0 : SUMOXMLDefinitions::isValidListOfTypeID(const std::vector<std::string>& typeIDs) {
2049 0 : if (typeIDs.empty()) {
2050 : return false;
2051 : } else {
2052 : // check that gives IDs are valid
2053 0 : for (const auto& typeID : typeIDs) {
2054 0 : if (!SUMOXMLDefinitions::isValidTypeID(typeID)) {
2055 : return false;
2056 : }
2057 : }
2058 : return true;
2059 : }
2060 : }
2061 :
2062 :
2063 : bool
2064 1525 : SUMOXMLDefinitions::isValidParameterKey(const std::string& value) {
2065 : // Generic parameters keys cannot be empty
2066 1525 : if (value.empty()) {
2067 : return false;
2068 : } else {
2069 1525 : return isValidAttribute(value);
2070 : }
2071 : }
2072 :
2073 :
2074 : std::string
2075 1326 : SUMOXMLDefinitions::makeValidID(const std::string& value) {
2076 1326 : if (value.empty()) {
2077 0 : return "_";
2078 : }
2079 : std::string result(value);
2080 1326 : if (result[0] == ':') {
2081 0 : result[0] = '_';
2082 : }
2083 19890 : for (const char c : " \t\n\r|\\'\";,<>&") {
2084 : std::replace(result.begin(), result.end(), c, '_');
2085 : }
2086 1326 : return result;
2087 : }
2088 :
2089 :
2090 : /****************************************************************************/
|