36 uint16_t AllocateUid (std::string name);
37 void SetParent (uint16_t uid, uint16_t parent);
38 void SetGroupName (uint16_t uid, std::string groupName);
40 void HideFromDocumentation (uint16_t uid);
41 uint16_t GetUid (std::string name)
const;
42 std::string GetName (uint16_t uid)
const;
43 uint16_t GetParent (uint16_t uid)
const;
44 std::string GetGroupName (uint16_t uid)
const;
46 bool HasConstructor (uint16_t uid)
const;
47 uint32_t GetRegisteredN (
void)
const;
48 uint16_t GetRegistered (uint32_t i)
const;
49 void AddAttribute (uint16_t uid,
56 void SetAttributeInitialValue(uint16_t uid,
59 uint32_t GetAttributeN (uint16_t uid)
const;
70 bool HasTraceSource (uint16_t uid, std::string name);
71 bool HasAttribute (uint16_t uid, std::string name);
80 std::vector<struct ns3::TypeId::AttributeInformation>
attributes;
81 std::vector<struct ns3::TypeId::TraceSourceInformation>
traceSources;
83 typedef std::vector<struct IidInformation>::const_iterator
Iterator;
90 IidManager::IidManager ()
95 IidManager::AllocateUid (std::string name)
98 for (
Iterator i = m_information.begin (); i != m_information.end (); i++)
102 NS_FATAL_ERROR (
"Trying to allocate twice the same uid: " << name);
108 information.
name = name;
113 m_information.push_back (information);
114 uint32_t uid = m_information.size ();
120 IidManager::LookupInformation (uint16_t uid)
const
122 NS_ASSERT (uid <= m_information.size () && uid != 0);
123 return const_cast<struct
IidInformation *
> (&m_information[uid-1]);
127 IidManager::SetParent (uint16_t uid, uint16_t parent)
129 NS_ASSERT (parent <= m_information.size ());
131 information->
parent = parent;
134 IidManager::SetGroupName (uint16_t uid, std::string groupName)
140 IidManager::HideFromDocumentation (uint16_t uid)
159 IidManager::GetUid (std::string name)
const
162 for (
Iterator i = m_information.begin (); i != m_information.end (); i++)
174 IidManager::GetName (uint16_t uid)
const
177 return information->
name;
180 IidManager::GetParent (uint16_t uid)
const
183 return information->
parent;
186 IidManager::GetGroupName (uint16_t uid)
const
193 IidManager::GetConstructor (uint16_t uid)
const
198 NS_FATAL_ERROR (
"Requested constructor for "<<information->
name<<
" but it does not have one.");
204 IidManager::HasConstructor (uint16_t uid)
const
211 IidManager::GetRegisteredN (
void)
const
213 return m_information.size ();
216 IidManager::GetRegistered (uint32_t i)
const
222 IidManager::HasAttribute (uint16_t uid,
228 for (std::vector<struct ns3::TypeId::AttributeInformation>::const_iterator i = information->
attributes.begin ();
237 if (parent == information)
243 information = parent;
249 IidManager::AddAttribute (uint16_t uid,
258 if (HasAttribute (uid, name))
260 NS_FATAL_ERROR (
"Attribute \"" << name <<
"\" already registered on tid=\"" <<
261 information->
name <<
"\"");
279 NS_ASSERT (i < information->attributes.size ());
280 information->
attributes[i].initialValue = initialValue;
286 IidManager::GetAttributeN (uint16_t uid)
const
295 NS_ASSERT (i < information->attributes.size ());
296 return information->attributes[i];
300 IidManager::HasTraceSource (uint16_t uid,
306 for (std::vector<struct ns3::TypeId::TraceSourceInformation>::const_iterator i = information->
traceSources.begin ();
315 if (parent == information)
321 information = parent;
327 IidManager::AddTraceSource (uint16_t uid,
333 if (HasTraceSource (uid, name))
335 NS_FATAL_ERROR (
"Trace source \"" << name <<
"\" already registered on tid=\"" <<
336 information->
name <<
"\"");
354 NS_ASSERT (i < information->traceSources.size ());
355 return information->traceSources[i];
358 IidManager::MustHideFromDocumentation (uint16_t uid)
const
388 NS_ASSERT_MSG (uid != 0,
"Assert in TypeId::LookupByName: " << name <<
" not found");
424 if (tmp.
name == name)
431 }
while (nextTid != tid);
457 return parent !=
m_tid;
463 while (tmp != other && tmp != tmp.
GetParent ())
467 return tmp == other && *
this != other;
487 return hasConstructor;
598 if (info.
name == name)
604 }
while (nextTid != tid);
626 std::string tidString;
631 is.setstate (std::ios_base::badbit);