some Ipv4Interface* -> Ptr<Ipv4Interface>, and unhack arraytraceresolver, still segfaults
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user