Eclipse SUMO - Simulation of Urban MObility
NIVissimTrafficDescription.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // -------------------
15 /****************************************************************************/
16 
17 
18 // ===========================================================================
19 // included modules
20 // ===========================================================================
21 #include <config.h>
22 
23 #include <string>
24 #include <map>
25 #include <cassert>
28 
29 
30 // ===========================================================================
31 // member function definitions
32 // ===========================================================================
34 
35 
36 // ===========================================================================
37 // member method definitions
38 // ===========================================================================
40  const std::string& name,
41  const NIVissimVehicleClassVector& vehicleTypes)
42  : myName(name), myVehicleTypes(vehicleTypes) {}
43 
44 
46  for (NIVissimVehicleClassVector::iterator i = myVehicleTypes.begin(); i != myVehicleTypes.end(); i++) {
47  delete *i;
48  }
49  myVehicleTypes.clear();
50 }
51 
52 
53 bool
55  const std::string& name,
56  const NIVissimVehicleClassVector& vehicleTypes) {
57  NIVissimTrafficDescription* o = new NIVissimTrafficDescription(name, vehicleTypes);
58  if (!dictionary(id, o)) {
59  delete o;
60  return false;
61  }
62  return true;
63 }
64 
65 
66 bool
68  DictType::iterator i = myDict.find(id);
69  if (i == myDict.end()) {
70  myDict[id] = o;
71  return true;
72  }
73  return false;
74 }
75 
76 
79  DictType::iterator i = myDict.find(id);
80  if (i == myDict.end()) {
81  return nullptr;
82  }
83  return (*i).second;
84 }
85 
86 
87 void
89  for (DictType::iterator i = myDict.begin(); i != myDict.end(); i++) {
90  delete (*i).second;
91  }
92  myDict.clear();
93 }
94 
95 
96 
97 
98 double
101  assert(i != 0);
102  return i->meanSpeed();
103 }
104 
105 
106 double
108  double speed = 0;
109  for (NIVissimVehicleClassVector::const_iterator i = myVehicleTypes.begin(); i != myVehicleTypes.end(); i++) {
110  speed += (*i)->getSpeed();
111  }
112  return speed / (double) myVehicleTypes.size();
113 }
114 
115 
116 
117 /****************************************************************************/
118 
NIVissimTrafficDescription::NIVissimTrafficDescription
NIVissimTrafficDescription(const std::string &name, const NIVissimVehicleClassVector &vehicleTypes)
Definition: NIVissimTrafficDescription.cpp:39
NIVissimTrafficDescription::dictionary
static bool dictionary(int id, const std::string &name, const NIVissimVehicleClassVector &vehicleTypes)
Definition: NIVissimTrafficDescription.cpp:54
NIVissimTrafficDescription::meanSpeed
static double meanSpeed(int id)
Definition: NIVissimTrafficDescription.cpp:99
NIVissimTrafficDescription::DictType
std::map< int, NIVissimTrafficDescription * > DictType
Definition: NIVissimTrafficDescription.h:52
NIVissimTrafficDescription::meanSpeed
double meanSpeed() const
Definition: NIVissimTrafficDescription.cpp:107
NIVissimTrafficDescription::myVehicleTypes
NIVissimVehicleClassVector myVehicleTypes
Definition: NIVissimTrafficDescription.h:50
NIVissimVehicleClassVector
std::vector< NIVissimVehicleClass * > NIVissimVehicleClassVector
Definition: NIVissimVehicleClassVector.h:29
NIVissimTrafficDescription::myDict
static DictType myDict
Definition: NIVissimTrafficDescription.h:53
NIVissimTrafficDescription
Definition: NIVissimTrafficDescription.h:36
NIVissimTrafficDescription::~NIVissimTrafficDescription
~NIVissimTrafficDescription()
Definition: NIVissimTrafficDescription.cpp:45
NIVissimTrafficDescription::clearDict
static void clearDict()
Definition: NIVissimTrafficDescription.cpp:88
config.h
NIVissimVehicleClassVector.h
NIVissimTrafficDescription.h