LCOV - code coverage report
Current view: top level - src/utils/xml - SUMOXMLDefinitions.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 51.2 % 43 22
Test Date: 2024-11-20 15:55:46 Functions: 60.0 % 15 9

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

Generated by: LCOV version 2.0-1