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.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 /****************************************************************************/
15 // A container for distributions
16 /****************************************************************************/
17 // ===========================================================================
18 // included modules
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 void clear()
delete all stored 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.
static TypedDistDict myDict
Map from distribution types to distribution ids to distributions.
std::map< std::string, Distribution * > DistDict
Definition of a map from distribution ids to distributions.
std::map< std::string, DistDict > TypedDistDict
Definition of a map from distribution types to distribution ids to distributions. ...