Eclipse SUMO - Simulation of Urban MObility
SUMORouteHandler.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
20 // Parser for routes during their loading
21 /****************************************************************************/
22 #pragma once
23 #include <config.h>
24 
26 #include <utils/common/SUMOTime.h>
29 
30 
31 // ===========================================================================
32 // class declarations
33 // ===========================================================================
34 class MsgHandler;
35 class SUMOVTypeParameter;
36 
37 
38 // ===========================================================================
39 // class definitions
40 // ===========================================================================
49 public:
51  enum StopPos {
56  };
57 
59  SUMORouteHandler(const std::string& file, const std::string& expectedRoot, const bool hardFail);
60 
62  virtual ~SUMORouteHandler();
63 
66  static StopPos checkStopPos(double& startPos, double& endPos, const double laneLength, const double minLength, const bool friendlyPos);
67 
69  static bool isStopPosValid(const double startPos, const double endPos, const double laneLength, const double minLength, const bool friendlyPos);
70 
72  SUMOTime getFirstDepart() const;
73 
75  SUMOTime getLastDepart() const;
76 
77 protected:
79 
80 
88  virtual void myStartElement(int element,
89  const SUMOSAXAttributes& attrs);
90 
97  virtual void myEndElement(int element);
99 
101 
102 
104  virtual void openVehicleTypeDistribution(const SUMOSAXAttributes& attrs) = 0;
105 
107  virtual void closeVehicleTypeDistribution() = 0;
108 
110  virtual void openRoute(const SUMOSAXAttributes& attrs) = 0;
111 
113  virtual void openFlow(const SUMOSAXAttributes& attrs) = 0;
114 
116  virtual void openRouteFlow(const SUMOSAXAttributes& attrs) = 0;
117 
119  virtual void openTrip(const SUMOSAXAttributes& attrs) = 0;
121 
123 
124 
131  virtual void closeRoute(const bool mayBeDisconnected = false) = 0;
132 
134  virtual void openRouteDistribution(const SUMOSAXAttributes& attrs) = 0;
135 
137  virtual void closeRouteDistribution() = 0;
138 
140  virtual void closeVehicle() = 0;
141 
143  virtual void closeVType() = 0;
144 
146  virtual void closePerson() = 0;
147 
149  virtual void closePersonFlow() = 0;
150 
152  virtual void closeContainer() = 0;
153 
155  virtual void closeContainerFlow() = 0;
156 
158  virtual void closeFlow() = 0;
159 
161  virtual void closeTrip() = 0;
163 
165 
166 
168  virtual void addTransportable(const SUMOSAXAttributes& attrs, const bool isPerson) {
169  UNUSED_PARAMETER(attrs);
170  UNUSED_PARAMETER(isPerson);
171  }
172 
174  virtual Parameterised* addStop(const SUMOSAXAttributes& attrs) = 0;
175 
177  virtual void addPersonTrip(const SUMOSAXAttributes& attrs) = 0;
178 
180  virtual void addWalk(const SUMOSAXAttributes& attrs) = 0;
181 
183  virtual void addRide(const SUMOSAXAttributes& attrs) = 0;
184 
186  virtual void addTransport(const SUMOSAXAttributes& attrs) = 0;
187 
189  virtual void addTranship(const SUMOSAXAttributes& attrs) = 0;
190 
192 
194  virtual bool checkLastDepart();
195 
197  void registerLastDepart();
198 
200  void addParam(const SUMOSAXAttributes& attrs);
201 
203  bool parseStop(SUMOVehicleParameter::Stop& stop, const SUMOSAXAttributes& attrs, std::string errorSuffix, MsgHandler* const errorOutput);
204 
205 protected:
207  const bool myHardFail;
208 
211 
213  std::vector<Parameterised*> myParamStack;
214 
217 
219  std::string myActiveRouteID;
220 
222  std::string myActiveRouteRefID;
223 
226 
229 
232 
234  std::vector<SUMOVehicleParameter::Stop> myActiveRouteStops;
235 
238 
241 
244 
247 
250 
252  std::vector<int> myElementStack;
253 
256 
257 private:
259  SUMORouteHandler(const SUMORouteHandler& s) = delete;
260 
263 };
long long int SUMOTime
Definition: GUI.h:35
#define UNUSED_PARAMETER(x)
Definition: StdDefs.h:30
An upper class for objects with additional parameters.
Definition: Parameterised.h:41
Parser for routes during their loading.
bool parseStop(SUMOVehicleParameter::Stop &stop, const SUMOSAXAttributes &attrs, std::string errorSuffix, MsgHandler *const errorOutput)
parses attributes common to all stops
virtual void openTrip(const SUMOSAXAttributes &attrs)=0
opens a trip for reading
StopPos
enum for stops
std::vector< SUMOVehicleParameter::Stop > myActiveRouteStops
List of the stops on the parsed route.
void registerLastDepart()
save last depart (only to be used if vehicle is not discarded)
virtual void openFlow(const SUMOSAXAttributes &attrs)=0
opens a flow for reading
virtual void closeContainer()=0
Ends the processing of a container.
SUMOTime myFirstDepart
the first read departure time
virtual void addWalk(const SUMOSAXAttributes &attrs)=0
add a fully specified walk
static bool isStopPosValid(const double startPos, const double endPos, const double laneLength, const double minLength, const bool friendlyPos)
check if start and end position of a stop is valid
SUMORouteHandler & operator=(const SUMORouteHandler &s)=delete
Invalidated assignment operator.
SUMOTime myBeginDefault
The default value for flow begins.
SUMORouteHandler(const std::string &file, const std::string &expectedRoot, const bool hardFail)
standard constructor
double myCurrentCosts
The currently parsed route costs.
virtual void openRouteDistribution(const SUMOSAXAttributes &attrs)=0
opens a route distribution for reading
virtual Parameterised * addStop(const SUMOSAXAttributes &attrs)=0
Processing of a stop.
bool myAllowInternalRoutes
whether references to internal routes are allowed in this context
std::string myActiveRouteID
The id of the current route.
virtual void openRoute(const SUMOSAXAttributes &attrs)=0
opens a route for reading
virtual void openVehicleTypeDistribution(const SUMOSAXAttributes &attrs)=0
opens a type distribution for reading
virtual ~SUMORouteHandler()
standard destructor
SUMORouteHandler(const SUMORouteHandler &s)=delete
Invalidated copy constructor.
virtual void closeVehicle()=0
Ends the processing of a vehicle.
virtual void closeFlow()=0
Ends the processing of a flow.
virtual void closePersonFlow()=0
Ends the processing of a person flow.
std::vector< Parameterised * > myParamStack
The stack of currently parsed parameterised objects.
SUMOVehicleParameter * myVehicleParameter
Parameter of the current vehicle, trip, person, container or flow.
virtual void addRide(const SUMOSAXAttributes &attrs)=0
Processing of a ride.
virtual void addTranship(const SUMOSAXAttributes &attrs)=0
Processing of a tranship.
SUMOTime getLastDepart() const
Returns the last loaded depart time.
const bool myHardFail
flag to enable or disable hard fails
std::vector< int > myElementStack
hierarchy of elements being parsed
SUMOVTypeParameter * myCurrentVType
The currently parsed vehicle type.
virtual void addTransport(const SUMOSAXAttributes &attrs)=0
Processing of a transport.
virtual void closeRoute(const bool mayBeDisconnected=false)=0
virtual void closePerson()=0
Ends the processing of a person.
SUMOTime myLastDepart
The insertion time of the vehicle read last.
SUMOTime myEndDefault
The default value for flow ends.
virtual void closeVehicleTypeDistribution()=0
closes (ends) the building of a distribution
static StopPos checkStopPos(double &startPos, double &endPos, const double laneLength, const double minLength, const bool friendlyPos)
check start and end position of a stop
virtual void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
void addParam(const SUMOSAXAttributes &attrs)
assign arbitrary vehicle parameters
virtual void closeContainerFlow()=0
Ends the processing of a container flow.
virtual void closeTrip()=0
Ends the processing of a trip.
double myActiveRouteProbability
The probability of the current route.
SUMOTime getFirstDepart() const
returns the first departure time that was ever read
virtual void openRouteFlow(const SUMOSAXAttributes &attrs)=0
opens a route flow for reading
int myInsertStopEdgesAt
where stop edges can be inserted into the current route (-1 means no insertion)
virtual void addTransportable(const SUMOSAXAttributes &attrs, const bool isPerson)
Processing of a person or container.
std::string myActiveRouteRefID
The id of the route the current route references to.
const RGBColor * myActiveRouteColor
The currently parsed route's color.
virtual void addPersonTrip(const SUMOSAXAttributes &attrs)=0
add a routing request for a walking or intermodal person
virtual void myEndElement(int element)
Called when a closing tag occurs.
virtual void closeVType()=0
Ends the processing of a vehicle type.
virtual void closeRouteDistribution()=0
closes (ends) the building of a distribution
virtual bool checkLastDepart()
Checks whether the route file is sorted by departure time if needed.
Encapsulated SAX-Attributes.
SAX-handler base for SUMO-files.
Structure representing possible vehicle parameter.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.