Simplified and unified implementation of RocketfuelWeightReader
diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index 76880a5..eb56339 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -39,7 +39,6 @@
 #include "ns3/ipv4-address.h"
 
 #include "ns3/constant-position-mobility-model.h"
-#include "ns3/random-variable.h"
 
 #include <boost/foreach.hpp>
 #include <boost/lexical_cast.hpp>
@@ -53,42 +52,48 @@
 
 NS_LOG_COMPONENT_DEFINE ("AnnotatedTopologyReader");
     
-NS_OBJECT_ENSURE_REGISTERED (AnnotatedTopologyReader);
-    
-TypeId AnnotatedTopologyReader::GetTypeId (void)
-{
-  static TypeId tid = TypeId ("ns3::AnnotatedTopologyReader")
-    .SetParent<Object> ()
-    ;
-  return tid;
-}
-    
 AnnotatedTopologyReader::AnnotatedTopologyReader (const std::string &path)
   : m_path (path)
-  // , m_ulx (0)
-  // , m_uly (0)
-  // , m_lrx (100.0)
-  // , m_lry (100.0)
+  , m_randX (0, 100.0)
+  , m_randY (0, 100.0)
 {
   NS_LOG_FUNCTION (this);
 }
     
-// void
-// AnnotatedTopologyReader::SetBoundingBox (double ulx, double uly, double lrx, double lry)
-// {
-//   NS_LOG_FUNCTION (this << ulx << uly << lrx << lry);
+void
+AnnotatedTopologyReader::SetBoundingBox (double ulx, double uly, double lrx, double lry)
+{
+  NS_LOG_FUNCTION (this << ulx << uly << lrx << lry);
   
-//   m_ulx = ulx;
-//   m_uly = uly;
-//   m_lrx = lrx;
-//   m_lry = lry;
-// }
+  m_randX = UniformVariable (ulx, lrx);
+  m_randY = UniformVariable (uly, lry);
+}
 
 AnnotatedTopologyReader::~AnnotatedTopologyReader ()
 {
   NS_LOG_FUNCTION (this);
 }
 
+Ptr<Node>
+AnnotatedTopologyReader::CreateNode (const std::string name)
+{
+  return CreateNode (name, m_randX.GetValue (), m_randX.GetValue ());
+}
+
+Ptr<Node>
+AnnotatedTopologyReader::CreateNode (const std::string name, double posX, double posY)
+{
+  Ptr<Node> node = CreateObject<Node> ();
+  Ptr<ConstantPositionMobilityModel> loc = CreateObject<ConstantPositionMobilityModel> ();
+  node->AggregateObject (loc);
+
+  loc->SetPosition (Vector (posX, posY, 0));
+
+  Names::Add (m_path, name, node);
+
+  return node;
+}
+
 NodeContainer
 AnnotatedTopologyReader::Read (void)
 {
@@ -102,9 +107,6 @@
       return nodes;
     }
 
-  uint32_t linksNumber = 0;
-  uint32_t nodesNumber = 0;
-
   while (!topgen.eof ())
     {
       string line;
@@ -125,15 +127,8 @@
       double latitude, longitude;
 
       lineBuffer >> name >> city >> latitude >> longitude;
-      Ptr<Node> node = CreateObject<Node> ();
-      Ptr<ConstantPositionMobilityModel> loc = CreateObject<ConstantPositionMobilityModel> ();
-      node->AggregateObject (loc);
-
-      loc->SetPosition (Vector (2*longitude, -2*latitude, 0));
-
-      Names::Add (m_path, name, node);
+      Ptr<Node> node = CreateNode (name, 2*longitude, -2*latitude);
       nodes.Add (node);
-      nodesNumber++;
     }
 
   map<string, set<string> > processedLinks; // to eliminate duplications
@@ -175,11 +170,9 @@
 
       AddLink (link);
       NS_LOG_DEBUG ("New link " << from << " <==> " << to << " / " << capacity << "Kbps with " << metric << " metric");
-                
-      linksNumber++;
     }
         
-  NS_LOG_INFO ("Annotated topology created with " << nodesNumber << " nodes and " << linksNumber << " links");
+  NS_LOG_INFO ("Annotated topology created with " << nodes.GetN () << " nodes and " << LinksSize () << " links");
   topgen.close ();
         
   ApplySettings ();