SUMO - Simulation of Urban MObility
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.dlr.de/
14 // Copyright (C) 2001-2017 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>
45 
46 
47 // ===========================================================================
48 // class declarations
49 // ===========================================================================
50 class MSMeanData;
51 
52 
53 // ===========================================================================
54 // class definitions
55 // ===========================================================================
61 public:
65 
66 
72 
73 
81  void close(SUMOTime step);
82 
83 
100  void add(SumoXMLTag type, MSDetectorFileOutput* d, const std::string& device, SUMOTime splInterval, SUMOTime begin = -1);
101 
102 
103 
116  void add(SumoXMLTag type, MSDetectorFileOutput* d);
117 
118 
130  void add(MSMeanData* mn, const std::string& device,
131  SUMOTime frequency, SUMOTime begin);
132 
133 
134 
143  OutputDevice* device,
144  SUMOTime interval, SUMOTime begin = -1);
145 
146 
147 
152  const std::vector<SumoXMLTag> getAvailableTypes() const;
153 
154 
161 
162 
171  void updateDetectors(const SUMOTime step);
172 
173 
185  void writeOutput(SUMOTime step, bool closing);
186 
187 
188 protected:
191 
193  typedef std::pair< MSDetectorFileOutput*, OutputDevice* > DetectorFilePair;
194 
196  typedef std::vector< DetectorFilePair > DetectorFileVec;
197 
199  typedef std::pair<SUMOTime, SUMOTime> IntervalsKey;
200 
202  typedef std::map< IntervalsKey, DetectorFileVec > Intervals;
204 
216  struct detectorEquals : public std::binary_function< DetectorFilePair, MSDetectorFileOutput*, bool > {
218  bool operator()(const DetectorFilePair& pair, const MSDetectorFileOutput* det) const {
219  return pair.first == det;
220  }
221  };
222 
223 protected:
225  std::map<SumoXMLTag, NamedObjectCont< MSDetectorFileOutput*> > myDetectors;
226 
227 
229  Intervals myIntervals;
230 
232  std::map<IntervalsKey, SUMOTime> myLastCalls;
233 
235  std::vector<MSMeanData*> myMeanData;
236 
239 
240 
241 private:
244 
247 
248 
249 };
250 
251 
252 #endif
253 
254 /****************************************************************************/
255 
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:67
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.
A map of named object pointers.
Detectors container; responsible for string and output generation.
Returns true if detectors are equal.
NamedObjectCont< MSDetectorFileOutput * > myEmptyContainer
An empty container to return in getTypedDetectors() if no detectors of the asked type exist...
void add(SumoXMLTag type, MSDetectorFileOutput *d, const std::string &device, SUMOTime splInterval, SUMOTime begin=-1)
Adds a detector/output combination into the containers.
bool operator()(const DetectorFilePair &pair, const MSDetectorFileOutput *det) const
Returns true if detectors are equal.
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.
std::map< SumoXMLTag, NamedObjectCont< MSDetectorFileOutput * > > myDetectors
The detectors map, first by detector type, then using NamedObjectCont (.
void close(SUMOTime step)
Closes the detector outputs.
const std::vector< SumoXMLTag > getAvailableTypes() const
Returns the list of available detector types.
~MSDetectorControl()
Destructor.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
long long int SUMOTime
Definition: TraCIDefs.h:52
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.
const NamedObjectCont< MSDetectorFileOutput * > & getTypedDetectors(SumoXMLTag type) const
Returns the list of detectors of the given type.
Base of value-generating classes (detectors)