author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Sun, 02 Mar 2008 21:12:21 +0100 | |
changeset 2532 | 86a40c7cbfe9 |
parent 2254 | 81fc1ce2d7bd |
permissions | -rw-r--r-- |
2254
81fc1ce2d7bd
interface-id -> type-id
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2252
diff
changeset
|
1 |
#include "type-id-default-value.h" |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
|
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
namespace ns3 { |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
|
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
5 |
TypeIdDefaultValue::TypeIdDefaultValue (std::string name, |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
std::string help, |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
7 |
TypeId tid, |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
std::string defaultValue) |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
: DefaultValueBase (name, help), |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
m_defaultName (defaultValue), |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
m_name (defaultValue), |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
12 |
m_interfaceId (tid) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
DefaultValueList::Add (this); |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
} |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
16 |
TypeId |
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
17 |
TypeIdDefaultValue::GetValue (void) const |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
{ |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
19 |
return TypeId::LookupByName (m_name); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
void |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
22 |
TypeIdDefaultValue::SetValue (TypeId interfaceId) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
m_name = interfaceId.GetName (); |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
void |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
27 |
TypeIdDefaultValue::SetValue (std::string name) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
m_name = name; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
bool |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
32 |
TypeIdDefaultValue::DoParseValue (const std::string &value) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
{ |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
34 |
for (uint32_t i = 0; i < TypeId::GetRegisteredN (); i++) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
{ |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
36 |
TypeId tid = TypeId::GetRegistered (i); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
do { |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
38 |
if (tid.GetName () == value && |
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
39 |
tid.HasConstructor ()) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
// check that it really supports the requested interface. |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
42 |
TypeId tmp = tid; |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
do { |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
if (tmp == m_interfaceId) |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
m_name = value; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
return true; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
} |
2245
42732cd06c68
go to the next element in search loop
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2242
diff
changeset
|
49 |
tmp = tmp.GetParent (); |
2251
04963d8cca51
iid (void) -> GetTypeId (void)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2250
diff
changeset
|
50 |
} while (tmp != Object::GetTypeId ()); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
} |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
52 |
tid = tid.GetParent (); |
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
53 |
} while (tid != Object::GetTypeId ()); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
return false; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
|
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
std::string |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
59 |
TypeIdDefaultValue::DoGetType (void) const |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
std::ostringstream oss; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
oss << "("; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
bool first = true; |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
64 |
for (uint32_t i = 0; i < TypeId::GetRegisteredN (); i++) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
{ |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
66 |
TypeId tid = TypeId::GetRegistered (i); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
// can this interface id be used to create objects ? |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
68 |
if (tid.HasConstructor ()) |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
{ |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
70 |
TypeId tmp = tid; |
2248 | 71 |
// does this interface id supports the requested interface id ? |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
72 |
do { |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
73 |
if (tmp == m_interfaceId) |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
74 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
if (!first) |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
76 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
oss << "|"; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
78 |
first = false; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
} |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
80 |
oss << tid.GetName (); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
} |
2245
42732cd06c68
go to the next element in search loop
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2242
diff
changeset
|
82 |
tmp = tmp.GetParent (); |
2251
04963d8cca51
iid (void) -> GetTypeId (void)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2250
diff
changeset
|
83 |
} while (tmp != Object::GetTypeId ()); |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
oss << ")"; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
return oss.str (); |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
88 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
|
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
std::string |
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2248
diff
changeset
|
91 |
TypeIdDefaultValue::DoGetDefaultValue (void) const |
2242
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
{ |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
return m_name; |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
} |
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
95 |
|
972b35e48f75
a replacement for ClassIdDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
96 |
} // namespace ns3 |