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-2013 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:
67  // well, well, friends are evil; one could think about overriding MSDetectorControl and introducing GUIDetectorControl...
68  friend class GUINet;
69 
70 
74 
75 
81 
82 
90  void close(SUMOTime step);
91 
92 
109  void add(SumoXMLTag type, MSDetectorFileOutput* d, const std::string& device, int splInterval, SUMOTime begin = -1);
110 
111 
112 
125  void add(SumoXMLTag type, MSDetectorFileOutput* d);
126 
127 
139  void add(MSMeanData* mn, const std::string& device,
140  SUMOTime frequency, SUMOTime begin);
141 
142 
143 
152  OutputDevice* device,
153  SUMOTime interval, SUMOTime begin = -1);
154 
155 
156 
163 
164 
165 
174  void updateDetectors(const SUMOTime step);
175 
176 
188  void writeOutput(SUMOTime step, bool closing);
189 
190 
191 protected:
194 
196  typedef std::pair< MSDetectorFileOutput*, OutputDevice* > DetectorFilePair;
197 
199  typedef std::vector< DetectorFilePair > DetectorFileVec;
200 
202  typedef std::pair<SUMOTime, SUMOTime> IntervalsKey;
203 
205  typedef std::map< IntervalsKey, DetectorFileVec > Intervals;
207 
219  struct detectorEquals : public std::binary_function< DetectorFilePair, MSDetectorFileOutput*, bool > {
221  bool operator()(const DetectorFilePair& pair, const MSDetectorFileOutput* det) const {
222  return pair.first == det;
223  }
224  };
225 
226 protected:
228  std::map<SumoXMLTag, NamedObjectCont< MSDetectorFileOutput*> > myDetectors;
229 
230 
233 
235  std::map<IntervalsKey, SUMOTime> myLastCalls;
236 
238  std::vector<MSMeanData*> myMeanData;
239 
242 
243 
244 private:
247 
250 
251 
252 };
253 
254 
255 #endif
256 
257 /****************************************************************************/
258 
std::vector< DetectorFilePair > DetectorFileVec
Container holding DetectorFilePair (with the same interval).
std::pair< MSDetectorFileOutput *, OutputDevice * > DetectorFilePair
A pair of a Detector with it&#39;s associated file-stream.
Data collector for edges/lanes.
Definition: MSMeanData.h:66
SumoXMLTag
Numbers representing SUMO-XML - element names.
std::vector< MSMeanData * > myMeanData
List of harmonoise detectors.
std::map< IntervalsKey, SUMOTime > myLastCalls
The map that holds the last call for each sample interval.
void updateDetectors(const SUMOTime step)
Computes detector values.
void writeOutput(SUMOTime step, bool closing)
Writes the output to be generated within the given time step.
Detectors container; responsible for string and output generation.
Returns true if detectors are equal.
const NamedObjectCont< MSDetectorFileOutput * > & getTypedDetectors(SumoXMLTag type) const
Returns the list of detectors of the given type.
NamedObjectCont< MSDetectorFileOutput * > myEmptyContainer
An empty container to return in getTypedDetectors() if no detectors of the asked type exist...
MSDetectorControl & operator=(const MSDetectorControl &)
Invalidated assignment operator.
std::map< IntervalsKey, DetectorFileVec > Intervals
Association of intervals to DetectorFilePair containers.
std::pair< SUMOTime, SUMOTime > IntervalsKey
Definition of the interval key.
bool operator()(const DetectorFilePair &pair, const MSDetectorFileOutput *det) const
Returns true if detectors are equal.
std::map< SumoXMLTag, NamedObjectCont< MSDetectorFileOutput * > > myDetectors
The detectors map, first by detector type, then using NamedObjectCont (.
void close(SUMOTime step)
Closes the detector outputs.
A MSNet extended by some values for usage within the gui.
Definition: GUINet.h:90
~MSDetectorControl()
Destructor.
void add(SumoXMLTag type, MSDetectorFileOutput *d, const std::string &device, int splInterval, SUMOTime begin=-1)
Adds a detector/output combination into the containers.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:70
MSDetectorControl()
Constructor.
Intervals myIntervals
Map that hold DetectorFileVec for given intervals.
void addDetectorAndInterval(MSDetectorFileOutput *det, OutputDevice *device, SUMOTime interval, SUMOTime begin=-1)
Adds one of the detectors as a new MSDetectorFileOutput.
Base of value-generating classes (detectors)