SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSDevice_Vehroutes.h
Go to the documentation of this file.
1 /****************************************************************************/
8 // A device which collects info on the vehicle trip
9 /****************************************************************************/
10 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
11 // Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
12 /****************************************************************************/
13 //
14 // This file is part of SUMO.
15 // SUMO is free software: you can redistribute it and/or modify
16 // it under the terms of the GNU General Public License as published by
17 // the Free Software Foundation, either version 3 of the License, or
18 // (at your option) any later version.
19 //
20 /****************************************************************************/
21 #ifndef MSDevice_Vehroutes_h
22 #define MSDevice_Vehroutes_h
23 
24 
25 // ===========================================================================
26 // included modules
27 // ===========================================================================
28 #ifdef _MSC_VER
29 #include <windows_config.h>
30 #else
31 #include <config.h>
32 #endif
33 
34 #include "MSDevice.h"
35 #include <microsim/MSNet.h>
36 #include <utils/common/SUMOTime.h>
37 
38 
39 // ===========================================================================
40 // class declarations
41 // ===========================================================================
42 class MSEdge;
43 class MSRoute;
44 
45 
46 // ===========================================================================
47 // class definitions
48 // ===========================================================================
57 class MSDevice_Vehroutes : public MSDevice {
58 public:
61  static void init();
62 
63 
74  static MSDevice_Vehroutes* buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into, unsigned int maxRoutes = INT_MAX);
75 
76 
78  static void generateOutputForUnfinished();
79 
80 
81 public:
84 
85 
86 
89 
99 
100 
112  bool notifyLeave(SUMOVehicle& veh, SUMOReal lastPos, Notification reason);
114 
115 
122  void generateOutput() const;
123 
124 
130  const MSRoute* getRoute(int index) const;
131 
132 
133 private:
139  MSDevice_Vehroutes(SUMOVehicle& holder, const std::string& id, unsigned int maxRoutes);
140 
141 
147  void writeXMLRoute(OutputDevice& os, int index = -1) const;
148 
149 
152  void addRoute();
153 
154 
155 private:
157  static bool mySaveExits;
158 
160  static bool myLastRouteOnly;
161 
163  static bool mySorted;
164 
166  static bool myWithTaz;
167 
168 
173  public:
176 
181  void vehicleStateChanged(const SUMOVehicle* const vehicle, MSNet::VehicleState to);
182 
184  std::map<const SUMOVehicle*, MSDevice_Vehroutes*> myDevices;
185 
186  };
187 
188 
189 
192 
194  static std::map<const SUMOTime, int> myDepartureCounts;
195 
197  static std::map<const SUMOTime, std::string> myRouteInfos;
198 
199 
210  public:
216  RouteReplaceInfo(const MSEdge* const edge_, const SUMOTime time_, const MSRoute* const route_)
217  : edge(edge_), time(time_), route(route_) {}
218 
221 
223  const MSEdge* edge;
224 
227 
229  const MSRoute* route;
230 
231  };
232 
235 
237  std::vector<RouteReplaceInfo> myReplacedRoutes;
238 
240  std::vector<SUMOTime> myExits;
241 
243  const unsigned int myMaxRoutes;
244 
247 
248 
249 private:
252 
255 
256 
257 };
258 
259 
260 #endif
261 
262 /****************************************************************************/
263