SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSDetectorControl.h
Go to the documentation of this file.
1 /****************************************************************************/
11 // Detectors container; responsible for string and output generation
12 /****************************************************************************/
13 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
14 // Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
15 /****************************************************************************/
16 //
17 // This file is part of SUMO.
18 // SUMO is free software: you can redistribute it and/or modify
19 // it under the terms of the GNU General Public License as published by
20 // the Free Software Foundation, either version 3 of the License, or
21 // (at your option) any later version.
22 //
23 /****************************************************************************/
24 #ifndef MSDetectorControl_h
25 #define MSDetectorControl_h
26 
27 
28 // ===========================================================================
29 // included modules
30 // ===========================================================================
31 #ifdef _MSC_VER
32 #include <windows_config.h>
33 #else
34 #include <config.h>
35 #endif
36 
37 #include <string>
38 #include <vector>
46 
47 #ifdef HAVE_INTERNAL
48 #include <mesosim/MEInductLoop.h>
49 #endif
50 
51 
52 // ===========================================================================
53 // class declarations
54 // ===========================================================================
55 class MSMeanData;
56 
57 
58 // ===========================================================================
59 // class definitions
60 // ===========================================================================
66 public:
70 
71 
77 
78 
86  void close(SUMOTime step);
87 
88 
105  void add(SumoXMLTag type, MSDetectorFileOutput* d, const std::string& device, int splInterval, SUMOTime begin = -1);
106 
107 
108 
121  void add(SumoXMLTag type, MSDetectorFileOutput* d);
122 
123 
135  void add(MSMeanData* mn, const std::string& device,
136  SUMOTime frequency, SUMOTime begin);
137 
138 
139 
148  OutputDevice* device,
149  SUMOTime interval, SUMOTime begin = -1);
150 
151 
152 
157  const std::vector<SumoXMLTag> getAvailableTypes() const;
158 
159 
166 
167 
176  void updateDetectors(const SUMOTime step);
177 
178 
190  void writeOutput(SUMOTime step, bool closing);
191 
192 
193 protected:
196 
198  typedef std::pair< MSDetectorFileOutput*, OutputDevice* > DetectorFilePair;
199 
201  typedef std::vector< DetectorFilePair > DetectorFileVec;
202 
204  typedef std::pair<SUMOTime, SUMOTime> IntervalsKey;
205 
207  typedef std::map< IntervalsKey, DetectorFileVec > Intervals;
209 
221  struct detectorEquals : public std::binary_function< DetectorFilePair, MSDetectorFileOutput*, bool > {
223  bool operator()(const DetectorFilePair& pair, const MSDetectorFileOutput* det) const {
224  return pair.first == det;
225  }
226  };
227 
228 protected:
230  std::map<SumoXMLTag, NamedObjectCont< MSDetectorFileOutput*> > myDetectors;
231 
232 
235 
237  std::map<IntervalsKey, SUMOTime> myLastCalls;
238 
240  std::vector<MSMeanData*> myMeanData;
241 
244 
245 
246 private:
249 
252 
253 
254 };
255 
256 
257 #endif
258 
259 /****************************************************************************/
260