Hacked arraytraceresolver to compile, but segfaults upon running simple-p2p
authorRaj Bhattacharjea <raj.b@gatech.edu>
Wed, 09 May 2007 16:56:33 -0400
changeset 546 0b652c3eef96
parent 545 49c33ddf1683
child 547 fc6c84abb832
Hacked arraytraceresolver to compile, but segfaults upon running simple-p2p
src/common/array-trace-resolver.h
src/node/node-list.cc
src/node/node-list.h
--- 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