Line data Source code
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 : /****************************************************************************/
14 : /// @file DistributionCont.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @date Sept 2002
17 : ///
18 : // A container for distributions
19 : /****************************************************************************/
20 : #include <config.h>
21 :
22 : #include "DistributionCont.h"
23 :
24 :
25 : // ===========================================================================
26 : // static variable definitions
27 : // ===========================================================================
28 : DistributionCont::TypedDistDict DistributionCont::myDict;
29 :
30 :
31 : // ===========================================================================
32 : // method definitions
33 : // ===========================================================================
34 : bool
35 153 : DistributionCont::dictionary(const std::string& type, const std::string& id,
36 : Distribution* d) {
37 : TypedDistDict::iterator i = myDict.find(type);
38 :
39 153 : if (i == myDict.end()) {
40 13 : myDict[type][id] = d;
41 13 : return true;
42 : }
43 : DistDict& dict = (*i).second;
44 : DistDict::iterator j = dict.find(id);
45 140 : if (j == dict.end()) {
46 140 : myDict[type][id] = d;
47 140 : return true;
48 : }
49 : return false;
50 : }
51 :
52 :
53 : Distribution*
54 3 : DistributionCont::dictionary(const std::string& type,
55 : const std::string& id) {
56 : TypedDistDict::iterator i = myDict.find(type);
57 3 : if (i == myDict.end()) {
58 : return nullptr;
59 : }
60 : DistDict& dict = (*i).second;
61 : DistDict::iterator j = dict.find(id);
62 3 : if (j == dict.end()) {
63 : return nullptr;
64 : }
65 3 : return (*j).second;
66 : }
67 :
68 :
69 : void
70 1907 : DistributionCont::clear() {
71 1920 : for (TypedDistDict::iterator i = myDict.begin(); i != myDict.end(); i++) {
72 : DistDict& dict = (*i).second;
73 166 : for (DistDict::iterator j = dict.begin(); j != dict.end(); j++) {
74 153 : delete (*j).second;
75 : }
76 : }
77 1907 : }
78 :
79 :
80 : /****************************************************************************/
|