Merge 2
authorJohn Abraham <john.abraham@gatech.edu>
Sat, 20 Aug 2011 14:41:19 -0400
changeset 7482 5b3af869c7f8
parent 7481 d89c804b7f80
child 7584 edac9bf34756
Merge 2
.hgignore
src/core/model/object-ptr-container.h
src/core/model/simple-ref-count.h
src/netanim/doc/animation-dumbbell.pdf
src/netanim/doc/animation-dumbbell.png
src/netanim/doc/animation.rst
src/netanim/examples/dumbbell-animation.cc
src/netanim/examples/grid-animation.cc
src/netanim/examples/star-animation.cc
src/netanim/examples/waf
src/netanim/examples/wscript
src/netanim/helper/animation-interface-helper.cc
src/netanim/helper/animation-interface-helper.h
src/netanim/model/animation-interface.cc
src/netanim/model/animation-interface.h
src/netanim/model/canvas-location.cc
src/netanim/model/canvas-location.h
src/netanim/waf
src/netanim/wscript
waf.bat
windows/NS_Maintainer/Debug/NS_Maintainer.exe
windows/ns-3-dev-src/ns-3-dev-src.vcxproj
windows/ns-3-dev-src/ns-3-dev-src.vcxproj.filters
windows/ns-3-dev.suo
windows/winport/module-headers/core-module.h
--- a/.hgignore	Sat Aug 20 09:16:15 2011 -0400
+++ b/.hgignore	Sat Aug 20 14:41:19 2011 -0400
@@ -36,3 +36,7 @@
 \.diff$
 \.tr$
 \#[^\#/]+\#$
+windows/ns-3-debug-headers/ns3/
+\.pch
+windows/ns-3-dev/Debug/ns-3-dev.pch
+windows/ns-3-dev/Debug/
--- a/src/core/model/object-ptr-container.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/core/model/object-ptr-container.h	Sat Aug 20 14:41:19 2011 -0400
@@ -1,17 +1,30 @@
-#ifndef OBJECT_VECTOR_H
-#define OBJECT_VECTOR_H
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INRIA, Mathieu Lacage
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors: Mathieu Lacage <mathieu.lacage@gmail.com>
+ */
+#ifndef OBJECT_PTR_CONTAINER_H
+#define OBJECT_PTR_CONTAINER_H
 
 #include <vector>
 #include "object.h"
 #include "ptr.h"
 #include "attribute.h"
 
-#ifdef WIN32
-#define TYPENAME
-#else
-#define TYPENAME typename
-#endif
-
 namespace ns3 {
 
 /**
@@ -22,12 +35,12 @@
  * This class it used to get attribute access to an array of
  * ns3::Object pointers.
  */
-class ObjectVectorValue : public AttributeValue
+class ObjectPtrContainerValue : public AttributeValue
 {
 public:
   typedef std::vector<Ptr<Object> >::const_iterator Iterator;
 
-  ObjectVectorValue ();
+  ObjectPtrContainerValue ();
 
   /**
    * \returns an iterator to the first object contained in this vector
@@ -52,32 +65,29 @@
   virtual bool DeserializeFromString (std::string value, Ptr<const AttributeChecker> checker);
 
 private:
-  friend class ObjectVectorAccessor;
+  friend class ObjectPtrContainerAccessor;
   std::vector<Ptr<Object> > m_objects;
 };
 
-template <typename T, typename U>
-Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (U T::*memberVector);
 
 template <typename T, typename U, typename INDEX>
 Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (Ptr<U> (T::*get)(INDEX) const,
-                          INDEX (T::*getN)(void) const);
+MakeObjectPtrContainerAccessor (Ptr<U> (T::*get)(INDEX) const,
+				INDEX (T::*getN)(void) const);
 
 template <typename T, typename U, typename INDEX>
 Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (INDEX (T::*getN)(void) const,
-                          Ptr<U> (T::*get)(INDEX) const);
+MakeObjectPtrContainerAccessor (INDEX (T::*getN)(void) const,
+				Ptr<U> (T::*get)(INDEX) const);
 
-class ObjectVectorChecker : public AttributeChecker
+class ObjectPtrContainerChecker : public AttributeChecker
 {
 public:
   virtual TypeId GetItemTypeId (void) const = 0;
 };
 
 template <typename T>
-Ptr<const AttributeChecker> MakeObjectVectorChecker (void);
+Ptr<const AttributeChecker> MakeObjectPtrContainerChecker (void);
 
 } // namespace ns3
 
@@ -86,17 +96,17 @@
 namespace internal {
 
 template <typename T>
-class AnObjectVectorChecker : public ObjectVectorChecker
+class AnObjectPtrContainerChecker : public ObjectPtrContainerChecker
 {
 public:
   virtual TypeId GetItemTypeId (void) const {
     return T::GetTypeId ();
   }
   virtual bool Check (const AttributeValue &value) const {
-    return dynamic_cast<const ObjectVectorValue *> (&value) != 0;
+    return dynamic_cast<const ObjectPtrContainerValue *> (&value) != 0;
   }
   virtual std::string GetValueTypeName (void) const {
-    return "ns3::ObjectVectorValue";
+    return "ns3::ObjectPtrContainerValue";
   }
   virtual bool HasUnderlyingTypeInformation (void) const {
     return true;
@@ -105,11 +115,11 @@
     return "ns3::Ptr< " + T::GetTypeId ().GetName () + " >";
   }
   virtual Ptr<AttributeValue> Create (void) const {
-    return ns3::Create<ObjectVectorValue> ();
+    return ns3::Create<ObjectPtrContainerValue> ();
   }
   virtual bool Copy (const AttributeValue &source, AttributeValue &destination) const {
-    const ObjectVectorValue *src = dynamic_cast<const ObjectVectorValue *> (&source);
-    ObjectVectorValue *dst = dynamic_cast<ObjectVectorValue *> (&destination);
+    const ObjectPtrContainerValue *src = dynamic_cast<const ObjectPtrContainerValue *> (&source);
+    ObjectPtrContainerValue *dst = dynamic_cast<ObjectPtrContainerValue *> (&destination);
     if (src == 0 || dst == 0)
       {
         return false;
@@ -122,7 +132,7 @@
 } // namespace internal
 
 
-class ObjectVectorAccessor : public AttributeAccessor
+class ObjectPtrContainerAccessor : public AttributeAccessor
 {
 public:
   virtual bool Set (ObjectBase * object, const AttributeValue &value) const;
@@ -134,50 +144,12 @@
   virtual Ptr<Object> DoGet (const ObjectBase *object, uint32_t i) const = 0;
 };
 
-template <typename T, typename U>
-Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (U T::*memberVector)
-{
-  struct MemberStdContainer : public ObjectVectorAccessor
-  {
-    virtual bool DoGetN (const ObjectBase *object, uint32_t *n) const {
-      const T *obj = dynamic_cast<const T *> (object);
-      if (obj == 0)
-        {
-          return false;
-        }
-      *n = (obj->*m_memberVector).size ();
-      return true;
-    }
-    virtual Ptr<Object> DoGet (const ObjectBase *object, uint32_t i) const {
-      const T *obj = static_cast<const T *> (object);
-      TYPENAME U::const_iterator begin = (obj->*m_memberVector).begin ();
-      TYPENAME U::const_iterator end = (obj->*m_memberVector).end ();
-      uint32_t k = 0;
-      for (TYPENAME U::const_iterator j = begin; j != end; j++, k++)
-        {
-          if (k == i)
-            {
-              return *j;
-              break;
-            }
-        }
-      NS_ASSERT (false);
-      // quiet compiler.
-      return 0;
-    }
-    U T::*m_memberVector;
-  } *spec = new MemberStdContainer ();
-  spec->m_memberVector = memberVector;
-  return Ptr<const AttributeAccessor> (spec, false);
-}
-
 template <typename T, typename U, typename INDEX>
 Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (Ptr<U> (T::*get)(INDEX) const,
-                          INDEX (T::*getN)(void) const)
+MakeObjectPtrContainerAccessor (Ptr<U> (T::*get)(INDEX) const,
+				INDEX (T::*getN)(void) const)
 {
-  struct MemberGetters : public ObjectVectorAccessor
+  struct MemberGetters : public ObjectPtrContainerAccessor
   {
     virtual bool DoGetN (const ObjectBase *object, uint32_t *n) const {
       const T *obj = dynamic_cast<const T *> (object);
@@ -202,19 +174,19 @@
 
 template <typename T, typename U, typename INDEX>
 Ptr<const AttributeAccessor>
-MakeObjectVectorAccessor (INDEX (T::*getN)(void) const,
-                          Ptr<U> (T::*get)(INDEX) const)
+MakeObjectPtrContainerAccessor (INDEX (T::*getN)(void) const,
+				Ptr<U> (T::*get)(INDEX) const)
 {
-  return MakeObjectVectorAccessor (get, getN);
+  return MakeObjectPtrContainerAccessor (get, getN);
 }
 
 template <typename T>
-Ptr<const AttributeChecker> MakeObjectVectorChecker (void)
+Ptr<const AttributeChecker> MakeObjectPtrContainerChecker (void)
 {
-  return Create<internal::AnObjectVectorChecker<T> > ();
+  return Create<internal::AnObjectPtrContainerChecker<T> > ();
 }
 
 
 } // namespace ns3
 
-#endif /* OBJECT_VECTOR_H */
+#endif /* OBJECT_PTR_CONTAINER_H */
--- a/src/core/model/simple-ref-count.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/core/model/simple-ref-count.h	Sat Aug 20 14:41:19 2011 -0400
@@ -28,6 +28,11 @@
 #include <stdint.h>
 #include <limits>
 
+#ifdef WIN32
+#undef max
+#undef min
+#endif
+
 namespace ns3 {
 
 /**
--- a/src/netanim/examples/dumbbell-animation.cc	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/examples/dumbbell-animation.cc	Sat Aug 20 14:41:19 2011 -0400
@@ -106,9 +106,6 @@
     {
       anim.SetOutputFile (animFile);
     }
-
-  // Uncomment the below statement to generate Animation trace in XML 
-  // anim.SetXMLOutput ();
   anim.StartAnimation ();
 
   // Set up the acutal simulation
@@ -118,5 +115,7 @@
   Simulator::Run ();
   std::cout << "Destroying the simulation" << std::endl;
   Simulator::Destroy ();
+  std::cout << "Stopping the animation" << std::endl;
+  anim.StopAnimation ();
   return 0;
 }
--- a/src/netanim/examples/grid-animation.cc	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/examples/grid-animation.cc	Sat Aug 20 14:41:19 2011 -0400
@@ -94,8 +94,6 @@
     {
       anim.SetOutputFile (animFile);
     }
-  // Uncomment the below statement to generate Animation trace in XML 
-  // anim.SetXMLOutput ();
   anim.StartAnimation ();
 
   // Set up the actual simulation
--- a/src/netanim/examples/star-animation.cc	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/examples/star-animation.cc	Sat Aug 20 14:41:19 2011 -0400
@@ -126,8 +126,6 @@
     {
       anim.SetOutputFile (animFile);
     }
-  // Uncomment the below statement to generate Animation trace in XML 
-  // anim.SetXMLOutput ();
   anim.StartAnimation ();
 
   NS_LOG_INFO ("Run Simulation.");
--- a/src/netanim/helper/animation-interface-helper.cc	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/helper/animation-interface-helper.cc	Sat Aug 20 14:41:19 2011 -0400
@@ -27,58 +27,62 @@
 
 namespace ns3 {
 AnimPacketInfo::AnimPacketInfo()
-  : m_txnd (0), m_fbTx (0), m_lbTx (0), 
-    m_txLoc (Vector (0,0,0))
+  : m_txnd (0), m_nRx (0), m_nRxEnd (0), m_fbTx (0), m_lbTx (0), 
+    transmitter_loc (Vector (0,0,0))
 {
 }
 
-AnimPacketInfo::AnimPacketInfo(Ptr <const NetDevice> txnd, const Time& fbTx, 
+AnimPacketInfo::AnimPacketInfo(Ptr<const NetDevice> nd, const Time& fbTx, 
   const Time& lbTx, Vector txLoc)
-  : m_txnd (txnd), m_fbTx (fbTx.GetSeconds ()), m_lbTx (lbTx.GetSeconds ()), 
-    m_txLoc (txLoc)
+  : m_txnd (nd), m_nRx (0), m_nRxEnd (0),
+    m_fbTx (fbTx.GetSeconds ()), m_lbTx (lbTx.GetSeconds ()), transmitter_loc (txLoc), 
+    reception_range (0) 
 {
 }
 
-void AnimPacketInfo::ProcessRxBegin (Ptr<const NetDevice> nd, const Time& fbRx)
+void AnimPacketInfo::ProcessRxBegin (Ptr<const NetDevice> nd, const Time& fbRx,
+                                 Vector rxLoc)
 {
-  m_rx[nd->GetNode ()->GetId ()] = AnimRxInfo (fbRx, nd, 0);
+  m_rx[nd->GetNode ()->GetId ()] = AnimRxInfo (fbRx,nd);
+  m_nRx++;
+  reception_range = std::max (reception_range,CalculateDistance (transmitter_loc,rxLoc));
 }
 
-bool AnimPacketInfo::ProcessRxEnd (Ptr<const NetDevice> nd, const Time& lbRx, Vector rxLoc)
+bool AnimPacketInfo::ProcessRxEnd (Ptr<const NetDevice> nd, const Time& lbRx)
+
 {
   uint32_t NodeId = nd->GetNode ()->GetId (); 
   // Find the RxInfo
-  if (m_rx.find (NodeId) == m_rx.end ())
-    {
-      return false;
-    } 
-  AnimRxInfo& rxInfo = m_rx[NodeId];
-  // Check if the NetDevice matches. A node may have several NetDevices
-  if (rxInfo.m_rxnd != nd) 
-    {
-      return false; 
+  if (m_rx.find(NodeId) != m_rx.end ())
+    { 
+      // Check if the NetDevice matches. A node may have several NetDevices
+      if (m_rx[NodeId].m_rxnd != nd) 
+        {
+          return false; 
+        }
+      m_rx[NodeId].m_lbRx = lbRx.GetSeconds ();
+      firstlastbitDelta = m_rx[NodeId].m_lbRx - m_rx[NodeId].m_fbRx;
+      m_nRxEnd++;
+      if (m_nRxEnd == m_nRx) 
+        {
+          return true;
+        }
+      return false; // Still more RxEnd notifications expected
     }
-  rxInfo.rxRange = CalculateDistance (m_txLoc, rxLoc);
-  rxInfo.m_lbRx = lbRx.GetSeconds ();
-  firstlastbitDelta = rxInfo.m_lbRx - rxInfo.m_fbRx;
-  return true;
-}
-
-AnimRxInfo AnimPacketInfo::GetRxInfo (Ptr<const NetDevice> nd)
-{
-  uint32_t NodeId = nd->GetNode ()->GetId (); 
-  NS_ASSERT (m_rx.find (NodeId) != m_rx.end ()); 
-  return m_rx[NodeId];
-}
-
-void AnimPacketInfo::RemoveRxInfo (Ptr<const NetDevice> nd)
-{
-  uint32_t NodeId = nd->GetNode ()->GetId (); 
-  m_rx.erase (m_rx.find (NodeId));
+   NS_ASSERT ("Received RxEnd notification but RxInfo never existed");
+  return false; // Still more rxEnd expected
 }
 
 void AnimPacketInfo::ProcessRxDrop (Ptr<const NetDevice> nd)
 {
+  if (m_rx.find (nd->GetNode ()->GetId ()) == m_rx.end()) 
+    {
+      NS_LOG_DEBUG ("Received RxDrop notification"); 
+      return;
+    }
+  // Remove any entry for which an RxBegin notification was received
+  m_rx.erase (m_rx.find (nd->GetNode ()->GetId ()));
+  m_nRx--;
 }
 
 
--- a/src/netanim/helper/animation-interface-helper.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/helper/animation-interface-helper.h	Sat Aug 20 14:41:19 2011 -0400
@@ -56,43 +56,27 @@
 
   /**
    * \brief Constructor
-   * \param fbRx First-bit Receive time
-   * \param nd NetDevice where packet was received
-   * \param rxRange Reception range 
+   * \param First-bit Receive time
+   * \param Ptr to NetDevice used for reception
    *
    */
-  AnimRxInfo (const Time& fbRx, Ptr <const NetDevice> nd ,double rxRange)
-    : m_fbRx (fbRx.GetSeconds ()), m_lbRx (0), m_rxnd (nd), 
-      rxRange (rxRange) {}
+  AnimRxInfo (const Time& fbRx, Ptr <const NetDevice> nd)
+    : m_fbRx (fbRx.GetSeconds ()), m_lbRx (0), m_rxnd (nd) {}
 
-  /** 
-   * \brief First bit receive time
-   * \param m_fbRx First bit receive time
-   *
+  /* 
+   * First bit receive time
    */
   double m_fbRx;            
   
-  /** 
-   * \brief Last bit receive time
-   * \param m_lbRx Last bit receive time
-   *
+  /* 
+   * Last bit receive time
    */
   double m_lbRx;             
 
-  /**
-   * \brief Ptr to receiving NetDevice
-   * \param m_rxnd Ptr to receiving NetDevice
-   *
+  /*
+   * Ptr to receiving Net Device
    */
   Ptr <const NetDevice> m_rxnd;
-
-  /** 
-   * \brief Reception range
-   * \param rxRange Reception range
-   *
-   */
-  double rxRange;
-
 };
 
 /**
@@ -117,99 +101,88 @@
 
   /**
    * \brief Default constructor
-   *
    */
   AnimPacketInfo ();
   
   /**
    * \brief Constructor
-   * \param tx_nd Ptr to NetDevice that is transmitting
-   * \param fbTx First bit transmit time
-   * \param lbTx Last bit transmit time
-   * \param txLoc Transmitter Location
+   * \param Ptr to NetDevice transmitted on
+   * \param First bit transmit time
+   * \param Last bit transmit time
+   * \param Transmitter Location
    *
    */
-  AnimPacketInfo(Ptr <const NetDevice> tx_nd, const Time& fbTx, const Time& lbTx,Vector txLoc);
-  
+  AnimPacketInfo(Ptr<const NetDevice> nd,
+                 const Time& fbTx, const Time& lbTx,Vector txLoc);
+
   /**
-   * \brief Ptr to NetDevice that is transmitting
-   * \param m_txnd NetDevice that is transmitting
-   *
-   */ 
-  Ptr <const NetDevice> m_txnd;
+   * Ptr to NetDevice used for transmission
+   */
+  Ptr<const NetDevice> m_txnd;
+
+  /**
+   * Number of receivers
+   */
+  uint32_t m_nRx;      
 
   /** 
-   * \brief First bit transmission time
-   * \param m_fbTx First bit transmission time
-   *
+   * Number of RxEnd trace callbacks
+   */
+  uint32_t m_nRxEnd;   
+
+  /** 
+   * First bit transmission time
    */
   double   m_fbTx;     
 
   /**
-   * \brief Last bit transmission time
-   * \param m_lbTx Last bit transmission time
-   *
+   * Last bit transmission time
    */
   double   m_lbTx;     
 
   /**
-   * \brief Transmitter's location
-   * \param m_txLoc Transmitter's Location
-   *
+   * Transmitter's location
    */
-  Vector   m_txLoc;
+  Vector   transmitter_loc;
 
+  /** 
+   * Receptiion range
+   */
+  double reception_range;
 
   /**
-   * \brief Collection of receivers
-   * \param m_rx Collection of receivers
-   *
+   * Collection of receivers
    */
   std::map<uint32_t,AnimRxInfo> m_rx;
 
   /**
    * \brief Process RxBegin notifications
-   * \param nd Ptr to NetDevice where packet was received
-   * \param fbRx First bit receive time
+   * \param Ptr to NetDevice where packet was received
+   * \param First bit receive time
+   * \param Location of the transmitter
    *
    */
-  void ProcessRxBegin (Ptr <const NetDevice> nd, const Time& fbRx);
+  void ProcessRxBegin (Ptr <const NetDevice> nd, const Time& fbRx,
+                   Vector rxLoc);
 
   /**
    * \brief Process RxEnd notifications
-   * \param nd Ptr to NetDevice where packet was received
-   * \param fbRx First bit receive time
-   * \param rxLoc Location of receiver
-   * \returns true if RxEnd notification was expected and processed
+   * \param Ptr to NetDevice where packet was received
+   * \param First bit receive time
    *
    */
-  bool ProcessRxEnd (Ptr <const NetDevice> nd, const Time& fbRx, Vector rxLoc);
+  bool ProcessRxEnd (Ptr <const NetDevice> nd, const Time& fbRx);
 
   /**
    * \brief Process RxDrop notifications
-   * \param nd Ptr to NetDevice where packet was dropped on reception
+   * \param Ptr to NetDevice where packet was dropped on reception
    *
    */
   void ProcessRxDrop (Ptr <const NetDevice> nd);
-  
-  /**
-   * \brief GetRxInfo
-   * \param nd Ptr to NetDevice where packet was received
-   * \returns AnimRxInfo object
-   *
-   */ 
-  AnimRxInfo GetRxInfo (Ptr <const NetDevice> nd);
-
-  /**
-   * \brief RemoveRxInfo
-   * \param nd Ptr to NetDevice where packet was received
-   *
-   */ 
-  void RemoveRxInfo (Ptr <const NetDevice> nd);
 
   /**
    * \brief Time delta between First bit Rx and Last bit Rx
-   * \param firstlastbitDelta Time delta between First bit Rx and Last bit Rx
+   *
    */
    double firstlastbitDelta;
 
--- a/src/netanim/model/animation-interface.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/model/animation-interface.h	Sat Aug 20 14:41:19 2011 -0400
@@ -34,6 +34,10 @@
 #include "ns3/animation-interface-helper.h"
 #include "ns3/mac48-address.h"
 
+#ifdef WIN32
+#include "winsock2.h"
+#endif
+
 namespace ns3 {
 
 class NetModel;
@@ -187,7 +191,7 @@
 
   typedef std::map <uint32_t,AnimRxInfo>::iterator RxInfoIterator;
 
-#ifdef WIN32
+#ifndef WIN32
   // Write specified amount of data to the specified handle
   int  WriteN (int, const char*, uint32_t);
 #else
--- a/src/netanim/model/canvas-location.cc	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/model/canvas-location.cc	Sat Aug 20 14:41:19 2011 -0400
@@ -1,4 +1,4 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2009 Georgia Institute of Technology
  *
--- a/src/netanim/model/canvas-location.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/model/canvas-location.h	Sat Aug 20 14:41:19 2011 -0400
@@ -1,4 +1,4 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2009 Georgia Institute of Technology
  *
@@ -59,6 +59,6 @@
   Vector m_location;
 };
 
-} // namespace ns3
+}; // namespace ns3
 
 #endif /* CANVAS_LOCATION_H */
--- a/src/netanim/wscript	Sat Aug 20 09:16:15 2011 -0400
+++ b/src/netanim/wscript	Sat Aug 20 14:41:19 2011 -0400
@@ -23,5 +23,4 @@
 def configure (conf) :
 	conf.check (header_name='sys/socket.h', define_name='HAVE_SYS_SOCKET_H')
 	conf.check (header_name='netinet/in.h', define_name='HAVE_NETINET_IN_H')
-        conf.write_config_header ('ns3/netanim-config.h', top=True)
 
--- a/windows/ns-3-dev-src/ns-3-dev-src.vcxproj	Sat Aug 20 09:16:15 2011 -0400
+++ b/windows/ns-3-dev-src/ns-3-dev-src.vcxproj	Sat Aug 20 14:41:19 2011 -0400
@@ -14,8 +14,8 @@
     <ClInclude Include="..\..\src\core\model\abort.h" />
     <ClInclude Include="..\..\src\core\model\assert.h" />
     <ClInclude Include="..\..\src\core\model\attribute-accessor-helper.h" />
+    <ClInclude Include="..\..\src\core\model\attribute-construction-list.h" />
     <ClInclude Include="..\..\src\core\model\attribute-helper.h" />
-    <ClInclude Include="..\..\src\core\model\attribute-list.h" />
     <ClInclude Include="..\..\src\core\model\attribute.h" />
     <ClInclude Include="..\..\src\core\model\boolean.h" />
     <ClInclude Include="..\..\src\core\model\breakpoint.h" />
@@ -51,6 +51,7 @@
     <ClInclude Include="..\..\src\core\model\nstime.h" />
     <ClInclude Include="..\..\src\core\model\object-base.h" />
     <ClInclude Include="..\..\src\core\model\object-factory.h" />
+    <ClInclude Include="..\..\src\core\model\object-ptr-container.h" />
     <ClInclude Include="..\..\src\core\model\object-vector.h" />
     <ClInclude Include="..\..\src\core\model\object.h" />
     <ClInclude Include="..\..\src\core\model\pointer.h" />
@@ -69,6 +70,7 @@
     <ClInclude Include="..\..\src\core\model\synchronizer.h" />
     <ClInclude Include="..\..\src\core\model\system-condition.h" />
     <ClInclude Include="..\..\src\core\model\system-mutex.h" />
+    <ClInclude Include="..\..\src\core\model\system-path.h" />
     <ClInclude Include="..\..\src\core\model\system-thread.h" />
     <ClInclude Include="..\..\src\core\model\system-wall-clock-ms.h" />
     <ClInclude Include="..\..\src\core\model\test.h" />
@@ -87,7 +89,7 @@
     <ClInclude Include="..\..\src\core\model\watchdog.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\..\src\core\model\attribute-list.cc" />
+    <ClCompile Include="..\..\src\core\model\attribute-construction-list.cc" />
     <ClCompile Include="..\..\src\core\model\attribute.cc" />
     <ClCompile Include="..\..\src\core\model\boolean.cc" />
     <ClCompile Include="..\..\src\core\model\breakpoint.cc" />
@@ -113,7 +115,7 @@
     <ClCompile Include="..\..\src\core\model\ns2-calendar-scheduler.cc" />
     <ClCompile Include="..\..\src\core\model\object-base.cc" />
     <ClCompile Include="..\..\src\core\model\object-factory.cc" />
-    <ClCompile Include="..\..\src\core\model\object-vector.cc" />
+    <ClCompile Include="..\..\src\core\model\object-ptr-container.cc" />
     <ClCompile Include="..\..\src\core\model\object.cc" />
     <ClCompile Include="..\..\src\core\model\pointer.cc" />
     <ClCompile Include="..\..\src\core\model\random-variable.cc" />
@@ -124,7 +126,6 @@
     <ClCompile Include="..\..\src\core\model\simulator.cc" />
     <ClCompile Include="..\..\src\core\model\string.cc" />
     <ClCompile Include="..\..\src\core\model\synchronizer.cc" />
-    <ClCompile Include="..\..\src\core\model\test.cc" />
     <ClCompile Include="..\..\src\core\model\time.cc" />
     <ClCompile Include="..\..\src\core\model\timer.cc" />
     <ClCompile Include="..\..\src\core\model\trace-source-accessor.cc" />
--- a/windows/ns-3-dev-src/ns-3-dev-src.vcxproj.filters	Sat Aug 20 09:16:15 2011 -0400
+++ b/windows/ns-3-dev-src/ns-3-dev-src.vcxproj.filters	Sat Aug 20 14:41:19 2011 -0400
@@ -18,9 +18,6 @@
     <ClInclude Include="..\..\src\core\model\attribute-helper.h">
       <Filter>model</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\core\model\attribute-list.h">
-      <Filter>model</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\core\model\boolean.h">
       <Filter>model</Filter>
     </ClInclude>
@@ -228,14 +225,20 @@
     <ClInclude Include="..\..\src\core\model\abort.h">
       <Filter>model</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\core\model\object-ptr-container.h">
+      <Filter>model</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\core\model\attribute-construction-list.h">
+      <Filter>model</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\core\model\system-path.h">
+      <Filter>model</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\core\model\attribute.cc">
       <Filter>model</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\core\model\attribute-list.cc">
-      <Filter>model</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\core\model\boolean.cc">
       <Filter>model</Filter>
     </ClCompile>
@@ -311,9 +314,6 @@
     <ClCompile Include="..\..\src\core\model\object-factory.cc">
       <Filter>model</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\core\model\object-vector.cc">
-      <Filter>model</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\core\model\pointer.cc">
       <Filter>model</Filter>
     </ClCompile>
@@ -341,9 +341,6 @@
     <ClCompile Include="..\..\src\core\model\synchronizer.cc">
       <Filter>model</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\core\model\test.cc">
-      <Filter>model</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\core\model\time.cc">
       <Filter>model</Filter>
     </ClCompile>
@@ -371,5 +368,11 @@
     <ClCompile Include="..\..\src\core\model\win32-system-wall-clock-ms.cc">
       <Filter>model</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\core\model\object-ptr-container.cc">
+      <Filter>model</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\core\model\attribute-construction-list.cc">
+      <Filter>model</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
Binary file windows/ns-3-dev.suo has changed
--- a/windows/winport/module-headers/core-module.h	Sat Aug 20 09:16:15 2011 -0400
+++ b/windows/winport/module-headers/core-module.h	Sat Aug 20 14:41:19 2011 -0400
@@ -11,7 +11,6 @@
 #include "assert.h"
 #include "attribute-accessor-helper.h"
 #include "attribute-helper.h"
-#include "attribute-list.h"
 #include "attribute.h"
 #include "boolean.h"
 #include "breakpoint.h"