RINASim  October 2016
Documentation of framework for OMNeT++
PLLSCommon.h
Go to the documentation of this file.
1 //
2 // This program is free software: you can redistribute it and/or modify
3 // it under the terms of the GNU Lesser General Public License as published by
4 // the Free Software Foundation, either version 3 of the License, or
5 // (at your option) any later version.
6 //
7 // This program is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // GNU Lesser General Public License for more details.
11 //
12 // You should have received a copy of the GNU Lesser General Public License
13 // along with this program. If not, see http://www.gnu.org/licenses/.
14 //
15 
16 #ifndef __PLLSCOMMON_H
17 #define __PLLSCOMMON_H
18 
19 #include <vector>
20 #include <map>
21 
22 struct linksU
23 {
24  unsigned int sId;
25  std::map<std::string, unsigned short> links;
26 
28  {
29  sId = 0;
30  }
31 
32  linksU(const unsigned int &_sId)
33  {
34  sId = _sId;
35  }
36 };
37 
38 typedef std::map<std::string, linksU> linksSt;
39 typedef std::pair<std::string, linksU> linksStEntry;
40 
41 typedef std::map<std::string, linksSt> linksStCol;
42 typedef std::pair<std::string, linksSt> linksStColEntry;
43 
44 typedef std::map<std::string, unsigned short>::iterator linksIt;
45 typedef linksSt::iterator linksStIt;
46 typedef linksStCol::iterator linksStColIt;
47 
48 typedef std::map<Address, unsigned short> neighMetric;
49 typedef std::map<std::string, neighMetric> qosNeighMetric;
50 typedef neighMetric::iterator neighMetricIt;
51 typedef qosNeighMetric::iterator qosNeighMetricIt;
52 
53 typedef std::set<unsigned short> qosSet;
54 typedef std::set<std::string> addrSet;
55 typedef std::vector<std::string> addrList;
56 typedef std::map<std::string, addrSet> qos2addrSet;
57 typedef std::pair<unsigned short, addrSet> qos2addrSetEntry;
58 typedef qosSet::iterator qosSetIt;
59 typedef addrSet::iterator addrSetIt;
60 typedef qos2addrSet::iterator qos2addrSetIt;
61 
62 // Tree built using routing information.
63 //
64 struct TreeNode
65 {
66  std::string addr;
67  unsigned short metric;
68  std::set<TreeNode*> chl;
69 
71  {
72  addr = "";
73  metric = UINT16_MAX;
74  }
75 
76  TreeNode(const std::string &_addr, const unsigned short &_metric)
77  {
78  addr = _addr;
79  metric = _metric;
80  }
81 
82  bool operator == (const TreeNode &b) const
83  {
84  return addr == b.addr;
85  }
86 
87  bool operator < (const TreeNode &b) const
88  {
89  return addr < b.addr;
90  }
91 
93  {
94  for(std::set<TreeNode *>::iterator it = chl.begin(); it != chl.end(); it++){
95  TreeNode * c = *it;
96  delete c;
97  }
98  }
99 };
100 typedef std::set<TreeNode *>::iterator TreeNodeIt;
101 
102 struct psT
103 {
105  unsigned short metric;
106 
107  psT()
108  {
109  p = NULL;
110  metric = UINT16_MAX;
111  }
112 
113  psT(TreeNode* _p, const unsigned short _metric)
114  {
115  p = _p;
116  metric = _metric;
117  }
118 
119  bool operator == (const psT &b) const
120  {
121  return p == b.p;
122  }
123 
124  bool operator < (const psT &b) const
125  {
126  return p < b.p;
127  }
128 };
129 
130 typedef std::map<std::string, psT > wMap;
131 typedef std::map<std::string, unsigned short > aMap;
132 
133 typedef wMap::iterator wMapIt;
134 typedef aMap::iterator aMapIt;
135 
136 typedef std::vector<wMapIt> mList;
137 typedef mList::iterator mListIt;
138 
139 
140 #endif // __PLLSCOMMON_H
std::map< std::string, linksU > linksSt
Definition: PLLSCommon.h:38
neighMetric::iterator neighMetricIt
Definition: PLLSCommon.h:50
std::vector< wMapIt > mList
Definition: PLLSCommon.h:136
unsigned short metric
Definition: PLLSCommon.h:67
std::map< Address, unsigned short > neighMetric
Definition: PLLSCommon.h:48
mList::iterator mListIt
Definition: PLLSCommon.h:137
bool operator<(const TreeNode &b) const
Definition: PLLSCommon.h:87
psT(TreeNode *_p, const unsigned short _metric)
Definition: PLLSCommon.h:113
qosSet::iterator qosSetIt
Definition: PLLSCommon.h:58
bool operator==(const TreeNode &b) const
Definition: PLLSCommon.h:82
std::map< std::string, psT > wMap
Definition: PLLSCommon.h:130
std::vector< std::string > addrList
Definition: PLLSCommon.h:55
qosNeighMetric::iterator qosNeighMetricIt
Definition: PLLSCommon.h:51
std::pair< std::string, linksSt > linksStColEntry
Definition: PLLSCommon.h:42
std::map< std::string, addrSet > qos2addrSet
Definition: PLLSCommon.h:56
std::set< std::string > addrSet
Definition: PLLSCommon.h:54
psT()
Definition: PLLSCommon.h:107
linksStCol::iterator linksStColIt
Definition: PLLSCommon.h:46
std::set< TreeNode * > chl
Definition: PLLSCommon.h:68
std::string addr
Definition: PLLSCommon.h:66
std::pair< unsigned short, addrSet > qos2addrSetEntry
Definition: PLLSCommon.h:57
addrSet::iterator addrSetIt
Definition: PLLSCommon.h:59
bool operator==(const psT &b) const
Definition: PLLSCommon.h:119
std::map< std::string, linksSt > linksStCol
Definition: PLLSCommon.h:41
std::map< std::string, neighMetric > qosNeighMetric
Definition: PLLSCommon.h:49
TreeNode(const std::string &_addr, const unsigned short &_metric)
Definition: PLLSCommon.h:76
std::set< unsigned short > qosSet
Definition: PLLSCommon.h:53
bool operator<(const psT &b) const
Definition: PLLSCommon.h:124
std::map< std::string, unsigned short >::iterator linksIt
Definition: PLLSCommon.h:44
qos2addrSet::iterator qos2addrSetIt
Definition: PLLSCommon.h:60
TreeNode()
Definition: PLLSCommon.h:70
std::pair< std::string, linksU > linksStEntry
Definition: PLLSCommon.h:39
std::map< std::string, unsigned short > aMap
Definition: PLLSCommon.h:131
TreeNode * p
Definition: PLLSCommon.h:104
std::set< TreeNode * >::iterator TreeNodeIt
Definition: PLLSCommon.h:100
unsigned short metric
Definition: PLLSCommon.h:105
~TreeNode()
Definition: PLLSCommon.h:92
aMap::iterator aMapIt
Definition: PLLSCommon.h:134
linksSt::iterator linksStIt
Definition: PLLSCommon.h:45
wMap::iterator wMapIt
Definition: PLLSCommon.h:133