SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NLHandler.h
Go to the documentation of this file.
1 /****************************************************************************/
10 // The XML-Handler for network loading
11 /****************************************************************************/
12 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
13 // Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
14 /****************************************************************************/
15 //
16 // This file is part of SUMO.
17 // SUMO is free software: you can redistribute it and/or modify
18 // it under the terms of the GNU General Public License as published by
19 // the Free Software Foundation, either version 3 of the License, or
20 // (at your option) any later version.
21 //
22 /****************************************************************************/
23 #ifndef NLHandler_h
24 #define NLHandler_h
25 
26 
27 // ===========================================================================
28 // included modules
29 // ===========================================================================
30 #ifdef _MSC_VER
31 #include <windows_config.h>
32 #else
33 #include <config.h>
34 #endif
35 
36 #include <xercesc/sax/HandlerBase.hpp>
37 #include <xercesc/sax/SAXException.hpp>
38 #include <xercesc/sax/AttributeList.hpp>
39 #include <utils/common/SUMOTime.h>
42 #include <microsim/MSLink.h>
46 #include <microsim/MSBitSetLogic.h>
47 #include "NLBuilder.h"
48 #include "NLDiscreteEventBuilder.h"
49 
50 
51 
52 // ===========================================================================
53 // class declarations
54 // ===========================================================================
55 class NLContainer;
56 class NLDetectorBuilder;
57 class NLTriggerBuilder;
59 
60 
61 // ===========================================================================
62 // class definitions
63 // ===========================================================================
72 class NLHandler : public MSRouteHandler {
73 public:
75  typedef std::vector<MSLane*> LaneVector;
76 
77 public:
87  NLHandler(const std::string& file, MSNet& net,
88  NLDetectorBuilder& detBuilder, NLTriggerBuilder& triggerBuilder,
89  NLEdgeControlBuilder& edgeBuilder,
90  NLJunctionControlBuilder& junctionBuilder);
91 
92 
94  virtual ~NLHandler();
95 
96  bool haveSeenInternalEdge() const {
98  }
99 
100 protected:
102 
103 
112  virtual void myStartElement(int element,
113  const SUMOSAXAttributes& attrs);
114 
115 
123  virtual void myEndElement(int element);
125 
126 
127 protected:
128  void addParam(const SUMOSAXAttributes& attrs);
129 
133  virtual void addE1Detector(const SUMOSAXAttributes& attrs);
134 
138  virtual void addInstantE1Detector(const SUMOSAXAttributes& attrs);
139 
143  virtual void addE2Detector(const SUMOSAXAttributes& attrs);
144 
148  void beginE3Detector(const SUMOSAXAttributes& attrs);
149 
153  void addE3Entry(const SUMOSAXAttributes& attrs);
154 
158  void addE3Exit(const SUMOSAXAttributes& attrs);
159 
161  virtual void endE3Detector();
162 
166  virtual void addVTypeProbeDetector(const SUMOSAXAttributes& attrs);
167 
171  virtual void addRouteProbeDetector(const SUMOSAXAttributes& attrs);
172 
177  virtual void addEdgeLaneMeanData(const SUMOSAXAttributes& attrs, int objecttype);
178 
180  virtual void closeEdge();
181 
182 
183 protected:
186 
187 
188 private:
190  void beginEdgeParsing(const SUMOSAXAttributes& attrs);
191 
193  void addLane(const SUMOSAXAttributes& attrs);
194 
196  void addPOI(const SUMOSAXAttributes& attrs);
197 
199  void addPoly(const SUMOSAXAttributes& attrs);
200 
202  void addRequest(const SUMOSAXAttributes& attrs);
203 
205  void initJunctionLogic(const SUMOSAXAttributes& attrs);
206 
208  void initTrafficLightLogic(const SUMOSAXAttributes& attrs);
209 
211  void addPhase(const SUMOSAXAttributes& attrs);
212 
213 
215  virtual void openJunction(const SUMOSAXAttributes& attrs);
216 
217  void parseLanes(const std::string& junctionID, const std::string& def, std::vector<MSLane*>& into, bool& ok);
218 
220  void addConnection(const SUMOSAXAttributes& attrs);
221 
222  virtual void openWAUT(const SUMOSAXAttributes& attrs);
223  void addWAUTSwitch(const SUMOSAXAttributes& attrs);
224  void addWAUTJunction(const SUMOSAXAttributes& attrs);
225 
227  void setLocation(const SUMOSAXAttributes& attrs);
228 
238  void addDistrict(const SUMOSAXAttributes& attrs);
239 
240 
251  void addDistrictEdge(const SUMOSAXAttributes& attrs, bool isSource);
252 
256  void addRoundabout(const SUMOSAXAttributes& attrs);
257 
258 
259  void closeWAUT();
260 
262  LinkDirection parseLinkDir(const std::string& dir);
263 
265  LinkState parseLinkState(const std::string& state);
266 
267 
268 protected:
271 
274 
275 
278 
281 
284 
287 
289  std::string myCurrentDistrictID;
290 
293 
295  std::string myCurrentWAUTID;
296 
299 
302 
304 
306 
308 
311 
313  typedef std::map<std::string, std::pair<std::string, std::string> > JunctionGraph;
315 
316 private:
318  NLHandler(const NLHandler& s);
319 
321  NLHandler& operator=(const NLHandler& s);
322 
323 };
324 
325 
326 #endif
327 
328 /****************************************************************************/
329