Eclipse SUMO - Simulation of Urban MObility
DistributionCont.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
18 // A container for distributions
19 /****************************************************************************/
20 #include <config.h>
21 
22 #include "DistributionCont.h"
23 
24 
25 // ===========================================================================
26 // static variable definitions
27 // ===========================================================================
29 
30 
31 // ===========================================================================
32 // method definitions
33 // ===========================================================================
34 bool
35 DistributionCont::dictionary(const std::string& type, const std::string& id,
36  Distribution* d) {
37  TypedDistDict::iterator i = myDict.find(type);
38 
39  if (i == myDict.end()) {
40  myDict[type][id] = d;
41  return true;
42  }
43  DistDict& dict = (*i).second;
44  DistDict::iterator j = dict.find(id);
45  if (j == dict.end()) {
46  myDict[type][id] = d;
47  return true;
48  }
49  return false;
50 }
51 
52 
54 DistributionCont::dictionary(const std::string& type,
55  const std::string& id) {
56  TypedDistDict::iterator i = myDict.find(type);
57  if (i == myDict.end()) {
58  return nullptr;
59  }
60  DistDict& dict = (*i).second;
61  DistDict::iterator j = dict.find(id);
62  if (j == dict.end()) {
63  return nullptr;
64  }
65  return (*j).second;
66 }
67 
68 
69 void
71  for (TypedDistDict::iterator i = myDict.begin(); i != myDict.end(); i++) {
72  DistDict& dict = (*i).second;
73  for (DistDict::iterator j = dict.begin(); j != dict.end(); j++) {
74  delete (*j).second;
75  }
76  }
77 }
78 
79 
80 /****************************************************************************/
static TypedDistDict myDict
Map from distribution types to distribution ids to distributions.
static bool dictionary(const std::string &type, const std::string &id, Distribution *d)
Adds a distribution of the given type and name to the container.
std::map< std::string, DistDict > TypedDistDict
Definition of a map from distribution types to distribution ids to distributions.
std::map< std::string, Distribution * > DistDict
Definition of a map from distribution ids to distributions.
static void clear()
delete all stored distributions