--- a/src/common/array-trace-resolver.h Wed May 09 14:50:14 2007 -0400
+++ b/src/common/array-trace-resolver.h Wed May 09 16:56:33 2007 -0400
@@ -24,6 +24,7 @@
#include <stdint.h>
#include <string>
#include "ns3/callback.h"
+#include "ns3/ptr.h"
#include "trace-resolver.h"
namespace ns3 {
@@ -82,12 +83,15 @@
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;
};
-
}//namespace ns3
namespace ns3 {
@@ -115,6 +119,14 @@
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)
+{}
+template <typename T>
TraceResolver::TraceResolverList
ArrayTraceResolver<T>::DoLookup (std::string id) const
{
@@ -127,6 +139,7 @@
typename ArrayTraceResolver<T>::Index index = typename ArrayTraceResolver<T>::Index (i);
context.Add (index);
list.push_back (m_get (i)->CreateTraceResolver (context));
+
}
}
return list;
--- a/src/node/node-list.cc Wed May 09 14:50:14 2007 -0400
+++ b/src/node/node-list.cc Wed May 09 16:56:33 2007 -0400
@@ -49,37 +49,37 @@
NodeListPriv ();
~NodeListPriv ();
- uint32_t Add (Node *node);
+ uint32_t Add (Ptr<Node> node);
NodeList::Iterator Begin (void);
NodeList::Iterator End (void);
TraceResolver *CreateTraceResolver (TraceContext const &context);
- Node *PeekNode (uint32_t n);
+ Ptr<Node> PeekNode (uint32_t n);
uint32_t GetNNodes (void);
private:
- std::vector<Node *> m_nodes;
+ std::vector<Ptr<Node> > m_nodes;
};
NodeListPriv::NodeListPriv ()
{}
NodeListPriv::~NodeListPriv ()
{
- for (std::vector<Node *>::iterator i = m_nodes.begin ();
+ for (std::vector<Ptr<Node> >::iterator i = m_nodes.begin ();
i != m_nodes.end (); i++)
{
- Node *node = *i;
+ Ptr<Node> node = *i;
node->Dispose ();
- node->Unref ();
+ //node->Unref ();
}
m_nodes.erase (m_nodes.begin (), m_nodes.end ());
}
uint32_t
-NodeListPriv::Add (Node *node)
+NodeListPriv::Add (Ptr<Node> node)
{
uint32_t index = m_nodes.size ();
- node->Ref ();
+ //node->Ref ();
m_nodes.push_back (node);
return index;
@@ -99,7 +99,7 @@
{
return m_nodes.size ();
}
-Node *
+Ptr<Node>
NodeListPriv::PeekNode (uint32_t n)
{
return m_nodes[n];
@@ -126,7 +126,7 @@
namespace ns3 {
uint32_t
-NodeList::Add (Node *node)
+NodeList::Add (Ptr<Node> node)
{
return SimulationSingleton<NodeListPriv>::Get ()->Add (node);
}
@@ -145,7 +145,7 @@
{
return SimulationSingleton<NodeListPriv>::Get ()->CreateTraceResolver (context);
}
-Node *
+Ptr<Node>
NodeList::PeekNode (uint32_t n)
{
return SimulationSingleton<NodeListPriv>::Get ()->PeekNode (n);
--- a/src/node/node-list.h Wed May 09 14:50:14 2007 -0400
+++ b/src/node/node-list.h Wed May 09 16:56:33 2007 -0400
@@ -24,6 +24,7 @@
#include <vector>
#include "ns3/array-trace-resolver.h"
+#include "ns3/ptr.h"
namespace ns3 {
@@ -35,14 +36,14 @@
{
public:
typedef ArrayTraceResolver<Node>::Index NodeIndex;
- typedef std::vector<Node *>::iterator Iterator;
+ typedef std::vector< Ptr<Node> >::iterator Iterator;
- static uint32_t Add (Node *node);
+ static uint32_t Add (Ptr<Node> node);
static Iterator Begin (void);
static Iterator End (void);
static TraceResolver *CreateTraceResolver (TraceContext const &context);
- static Node *PeekNode (uint32_t n);
+ static Ptr<Node> PeekNode (uint32_t n);
};
}//namespace ns3