some Ipv4Interface* -> Ptr<Ipv4Interface>, and unhack arraytraceresolver, still segfaults

This commit is contained in:
Unknown
2007-05-09 23:23:05 -04:00
parent 80854a2c39
commit a70e279787
10 changed files with 45 additions and 53 deletions

View File

@@ -80,17 +80,13 @@ public:
* a pointer to a TraceResolver. i.e. the signature is:
* TraceResolver * (*) (TraceContext const &)
*/
ArrayTraceResolver (TraceContext const &context,
Callback<uint32_t> getSize,
Callback<T *, uint32_t> get);
ArrayTraceResolver (TraceContext const &context,
Callback<uint32_t> getSize,
Callback<Ptr<T>, uint32_t> get);
private:
virtual TraceResolverList DoLookup (std::string id) const;
Callback<uint32_t> m_getSize;
Callback<T *, uint32_t> m_get;
Callback<Ptr<T>, uint32_t> m_get2;
Callback<Ptr<T>, uint32_t> m_get;
};
}//namespace ns3
@@ -110,21 +106,13 @@ ArrayTraceResolver<T>::Index::operator uint32_t ()
return m_index;
}
template <typename T>
ArrayTraceResolver<T>::ArrayTraceResolver (TraceContext const &context,
Callback<uint32_t> getSize,
Callback<T *, uint32_t> get)
: TraceResolver (context),
m_getSize (getSize),
m_get (get)
{}
template <typename T>
ArrayTraceResolver<T>::ArrayTraceResolver (TraceContext const &context,
Callback<uint32_t> getSize,
Callback<Ptr<T>, uint32_t> get)
: TraceResolver (context),
m_getSize (getSize),
m_get2 (get)
m_get (get)
{}
template <typename T>
TraceResolver::TraceResolverList
@@ -132,16 +120,15 @@ ArrayTraceResolver<T>::DoLookup (std::string id) const
{
TraceResolverList list;
if (id == "*")
{
for (uint32_t i = 0; i < m_getSize (); i++)
{
for (uint32_t i = 0; i < m_getSize (); i++)
{
TraceContext context = GetContext ();
typename ArrayTraceResolver<T>::Index index = typename ArrayTraceResolver<T>::Index (i);
typename ArrayTraceResolver<T>::Index index = typename ArrayTraceResolver<T>::Index (i);
context.Add (index);
list.push_back (m_get (i)->CreateTraceResolver (context));
}
}
}
return list;
}