Doxygen and wscript messages point to test.py
authorCraig Dowell <craigdo@ee.washington.edu>
Sun, 04 Oct 2009 20:52:24 -0700
changeset 5361 e8989b44bffb
parent 5360 f9f9f1f41517
child 5362 d31f56c9b7cb
Doxygen and wscript messages point to test.py
src/helper/application-container.h
src/helper/athstats-helper.h
src/helper/bridge-helper.h
src/helper/csma-helper.h
src/helper/dot11s-installer.h
src/helper/emu-helper.h
src/helper/flame-installer.h
src/helper/flow-monitor-helper.h
src/helper/internet-stack-helper.h
src/helper/ipv4-address-helper.h
src/helper/ipv4-global-routing-helper.h
src/helper/ipv4-interface-container.h
src/helper/ipv4-list-routing-helper.h
src/helper/ipv4-nix-vector-helper.h
src/helper/ipv4-routing-helper.h
src/helper/ipv4-static-routing-helper.h
src/helper/ipv6-address-helper.h
src/helper/ipv6-interface-container.h
src/wscript
wscript
--- a/src/helper/application-container.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/application-container.h	Sun Oct 04 20:52:24 2009 -0700
@@ -28,7 +28,15 @@
 namespace ns3 {
 
 /**
- * \brief holds a vector of ns3::Application pointers
+ * \brief holds a vector of ns3::Application pointers.
+ *
+ * Typically ns-3 Applications are installed on nodes using an Application
+ * helper.  The helper Install method takes a NodeContainer which holds 
+ * some number of Ptr<Node>.  For each of the Nodes in the NodeContainer
+ * the helper will instantiate an application, install it in a node and
+ * add a Ptr<Application> to that application into a Container for use
+ * by the caller.  This is that container used to hold the Ptr<Application>
+ * which are instantiated by the Application helper.
  *
  */
 class ApplicationContainer
@@ -40,60 +48,165 @@
   ApplicationContainer ();
 
   /**
-   * Create an ApplicationContainer with exactly one application
+   * Create an ApplicationContainer with exactly one application which has
+   * been previously instantiated.  The single application is specified
+   * by a smart pointer.
    *
-   * \param application The application to add to the container
+   * \param application The application to add to the container.
    */
   ApplicationContainer (Ptr<Application> application);
 
   /**
-   * Create an ApplicationContainer with exactly one application
+   * Create an ApplicationContainer with exactly one application which has
+   * been previously instantiated and assigned a name using the Object name
+   * service.  This Application is specified by its assigned name. 
    *
-   * \param name The name of the application object to add to the container
+   * \param name The name of the application object to add to the container.
    */
   ApplicationContainer (std::string name);
 
   typedef std::vector<Ptr<Application> >::const_iterator Iterator;
 
   /**
-   * \returns an iterator which points to the start of the array of pointers.
+   * \brief Get an iterator which refers to the first Application in the 
+   * container.
+   *
+   * Applications can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a 
+   * for-loop to run through the Applications
+   *
+   * \code
+   *   ApplicationContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       (*i)->method ();  // some Application method
+   *     }
+   * \endcode
+   *
+   * \returns an iterator which refers to the first Application in the container.
    */
   Iterator Begin (void) const;
+
   /**
-   * \returns an iterator which points to the end of the array of pointers.
+   * \brief Get an iterator which indicates to the last Application in the 
+   * container.
+   *
+   * Applications can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a 
+   * for-loop to run through the Applications
+   *
+   * \code
+   *   ApplicationContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       (*i)->method ();  // some Application method
+   *     }
+   * \endcode
+   *
+   * \returns an iterator which indicates an ending condition for a loop.
    */
   Iterator End (void) const;
 
   /**
-   * \returns the number of application pointers stored in this container.
+   * \brief Get the number of Ptr<Application> stored in this container.
+   *
+   * Applications can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the direct method and is typically used to
+   * define an ending condition in a for-loop that runs through the stored
+   * Applications
+   *
+   * \code
+   *   uint32_t nApplications = continer.GetN ();
+   *   for (uint32_t i = 0 i < nApplications; ++i)
+   *     {
+   *       Ptr<Application> p = continer.Get (i)
+   *       i->method ();  // some Application method
+   *     }
+   * \endcode
+   *
+   * \returns the number of Ptr<Application> stored in this container.
    */
   uint32_t GetN (void) const;
+
   /**
+   * \brief Get the Ptr<Application> stored in this container at a given
+   * index.
+   *
+   * Applications can be retrieved from the container in two ways.  First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the direct method and is used to retrieve the
+   * indexed Ptr<Appliation>.
+   *
+   * \code
+   *   uint32_t nApplications = continer.GetN ();
+   *   for (uint32_t i = 0 i < nApplications; ++i)
+   *     {
+   *       Ptr<Application> p = continer.Get (i)
+   *       i->method ();  // some Application method
+   *     }
+   * \endcode
+   *
    * \param i the index of the requested application pointer.
    * \returns the requested application pointer.
    */
   Ptr<Application> Get (uint32_t i) const;
 
   /**
-   * Append to the end of this container the other input container.
+   * \brief Append the contents of another ApplicationContainer to the end of
+   * this container.
    *
-   * \param other another application container
+   * \param The ApplicationContainer to append.
    */
   void Add (ApplicationContainer other);
+
   /**
-   * Append to the end of this container the input application pointer.
+   * \brief Append the single Ptr<Application> to this container.
    *
-   * \param application another netdevice pointer.
+   * \param application The Ptr<Application> to append.
    */
   void Add (Ptr<Application> application);
+
   /**
-   * Append to the end of this container the application specified by the name.
+   * \brief Append to this container the single Ptr<Application> referred to
+   * via its object name service registered name.
    *
    * \param name The name of the application object to add to the container.
    */
   void Add (std::string name);
 
+  /**
+   * \brief Arrange for all of the Applications in this containter to Start()
+   * at the Time given as a parameter.
+   *
+   * All Applications need to be provided with a starting simulation time and
+   * a stopping simulation time.  The ApplicationContainer is a convenient 
+   * place for allowing all of the contained Applications to be told to wake
+   * up and start doing their thing (Start) at a common time.
+   *
+   * This method simply iterates through the contained Applications and calls
+   * their Start() methods with the provided Time.
+   *
+   * \param start The Time at which each of the applications should start.
+   */
   void Start (Time start);
+
+  /**
+   * \brief Arrange for all of the Applications in this containter to Stop()
+   * at the Time given as a parameter.
+   *
+   * All Applications need to be provided with a starting simulation time and
+   * a stopping simulation time.  The ApplicationContainer is a convenient 
+   * place for allowing all of the contained Applications to be told to shut
+   * down and stop doing their thing (Stop) at a common time.
+   *
+   * This method simply iterates through the contained Applications and calls
+   * their Start() methods with the provided Time.
+   *
+   * \param start The Time at which each of the applications should start.
+   */
   void Stop (Time stop);
 
 private:
--- a/src/helper/athstats-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/athstats-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -88,7 +88,7 @@
     
 
   /** 
-   * function to be called when the net device transmittes a packet
+   * function to be called when the net device transmits a packet
    * 
    * @param context 
    * @param p the packet being transmitted
@@ -139,7 +139,6 @@
    */  
   void TxFinalDataFailedTrace (std::string context, Mac48Address address);    
 
-
   /** 
    * Function to be called when the PHY layer  of the considered
    * device receives a frame
@@ -195,10 +194,16 @@
 
 private:
 
+  /** 
+   * @internal
+   */
   void WriteStats ();
+
+  /** 
+   * @internal
+   */
   void ResetCounters ();
 
-
   uint32_t m_txCount;
   uint32_t m_rxCount;
   uint32_t m_shortRetryCount;
@@ -212,7 +217,6 @@
 
   Time m_interval;    
 
-
 }; // class AthstatsWifiTraceSink
 
 
--- a/src/helper/bridge-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/bridge-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -36,13 +36,16 @@
 class BridgeHelper
 {
 public:
+  /*
+   * Construct a BridgeHelper
+   */
   BridgeHelper ();
   /**
+   * Set an attribute on each ns3::BridgeNetDevice created by
+   * BridgeHelper::Install
+   *
    * \param n1 the name of the attribute to set
    * \param v1 the value of the attribute to set
-   *
-   * Set an attribute on each ns3::BridgeNetDevice created by
-   * BridgeHelper::Install
    */
   void SetDeviceAttribute (std::string n1, const AttributeValue &v1);
   /**
--- a/src/helper/csma-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/csma-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -40,6 +40,9 @@
 class CsmaHelper
 {
 public:
+  /**
+   * Construct a CsmaHelper.
+   */
   CsmaHelper ();
 
   /**
@@ -349,13 +352,30 @@
                     NetDeviceContainer& hubDevices, NetDeviceContainer& spokeDevices);
 
 private:
+  /*
+   * \internal
+   */
   Ptr<NetDevice> InstallPriv (Ptr<Node> node, Ptr<CsmaChannel> channel) const;
 
+  /*
+   * \internal
+   */
   static void SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet);
 
   static void AsciiRxEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+  /*
+   * \internal
+   */
   static void AsciiEnqueueEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /*
+   * \internal
+   */
   static void AsciiDequeueEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /*
+   * \internal
+   */
   static void AsciiDropEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
 
   ObjectFactory m_queueFactory;
--- a/src/helper/dot11s-installer.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/dot11s-installer.h	Sun Oct 04 20:52:24 2009 -0700
@@ -18,26 +18,61 @@
  * Authors: Kirill Andreev <andreev@iitp.ru>
  */
 
-
 #ifndef DOT11S_STACK_INSTALLER_H
 #define DOT11S_STACK_INSTALLER_H
+
 #include "ns3/mesh-stack-installer.h"
+
 namespace ns3 {
+
+/**
+ * \brief Helper class to allow easy installation of 802.11s stack.
+ */
 class Dot11sStack : public MeshStack
 {
-  public:
-    static TypeId GetTypeId ();
-    Dot11sStack ();
-    ~Dot11sStack ();
-    void DoDispose ();
+public:
+  /**
+   * \internal
+   */
+  static TypeId GetTypeId ();
+  
+  /**
+   * Create a Dot11sStack() installer helper.
+   */
+  Dot11sStack ();
+
+  /**
+   * Destroy a Dot11sStack() installer helper.
+   */
+  ~Dot11sStack ();
+
+  /**
+   * Break any reference cycles in the installer helper.  Required for ns-3
+   * Object support.
+   */
+  void DoDispose ();
 
-    ///\brief Installs 802.11s stack. needed by helper only
-    bool InstallStack (Ptr<MeshPointDevice> mp);
-    void Report (const Ptr<MeshPointDevice> mp, std::ostream&);
-    void ResetStats (const Ptr<MeshPointDevice> mp);
-  private:
-    Mac48Address m_root;
+  /**
+   * \brief Install an 802.11s stack.
+   * \param The Ptr<MeshPointDevice> to use when setting up the PMP.
+   */
+  bool InstallStack (Ptr<MeshPointDevice> mp);
+ 
+  /**
+   * \brief Iterate through the referenced devices and protocols and print
+   * their statistics
+   */
+  void Report (const Ptr<MeshPointDevice> mp, std::ostream&);
+
+  /**
+   * \brief Reset the statistics on the referenced devices and protocols.
+   */
+  void ResetStats (const Ptr<MeshPointDevice> mp);
+private:
+  Mac48Address m_root;
 };
+
 } //namespace ns3
+
 #endif
 
--- a/src/helper/emu-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/emu-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -39,6 +39,10 @@
 class EmuHelper
 {
 public:
+  /*
+   * Construct an EmuHelper() which is used to make installing and configuring 
+   * Emulated Net Devices easier.
+   */
   EmuHelper ();
 
   /**
@@ -206,12 +210,34 @@
   NetDeviceContainer Install (const NodeContainer &c) const;
 
 private:
+  /*
+   * \internal
+   */
   Ptr<NetDevice> InstallPriv (Ptr<Node> node) const;
+
+  /*
+   * \internal
+   */
   static void SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet);
 
+  /*
+   * \internal
+   */
   static void AsciiRxEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /*
+   * \internal
+   */
   static void AsciiEnqueueEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /*
+   * \internal
+   */
   static void AsciiDequeueEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /*
+   * \internal
+   */
   static void AsciiDropEvent (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
 
   ObjectFactory m_queueFactory;
--- a/src/helper/flame-installer.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/flame-installer.h	Sun Oct 04 20:52:24 2009 -0700
@@ -20,26 +20,60 @@
 
 #ifndef FLAME_STACK_INSTALLER_H
 #define FLAME_STACK_INSTALLER_H
+
 #include "ns3/mesh-stack-installer.h"
+
 namespace ns3 {
+
 /**
  * \ingroup flame
  *
- * \brief FLAME mesh stack (actually single protocol in this stack)
+ * \brief Helper class used to install FLAME mesh stack (actually single
+ * protocol in this stack)
  */
 class FlameStack : public MeshStack
 {
-  public:
-    static TypeId GetTypeId ();
-    FlameStack ();
-    ~FlameStack ();
-    void DoDispose ();
+public:
+  /*
+   * \internal
+   */
+  static TypeId GetTypeId ();
+
+  /**
+   * Construct a FlameStack helper class.
+   */
+  FlameStack ();
+
+  /**
+   * Destroy a FlameStack helper class.
+   */
+  ~FlameStack ();
 
-    /// Installs flame stack on given mesh point device.
-    bool InstallStack (Ptr<MeshPointDevice> mp);
-    void Report (const Ptr<MeshPointDevice> mp, std::ostream&);
-    void ResetStats (const Ptr<MeshPointDevice> mp);
+  /**
+   * \internal
+   * Break any reference cycles in the installer helper.  Required for ns-3
+   * Object support.
+   */
+  void DoDispose ();
+  
+  /**
+   * \brief Install a flame stack on the given MeshPointDevice
+   * \param The Ptr<MeshPointDevice> to use.
+   */
+  bool InstallStack (Ptr<MeshPointDevice> mp);
+
+  /**
+   * \brief Print flame protocol statistics.
+   */
+  void Report (const Ptr<MeshPointDevice> mp, std::ostream&);
+
+  /**
+   * \brief Reset the statistics.
+   */
+  void ResetStats (const Ptr<MeshPointDevice> mp);
 };
+
 } //namespace ns3
-#endif
 
+#endif // FLAME_STACK_INSTALLER_H
+
--- a/src/helper/flow-monitor-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/flow-monitor-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -35,15 +35,18 @@
 class FlowMonitorHelper
 {
 public:
+  /// \brief Construct a FlowMonitorHelper class which makes it easier to 
+  /// configure and use the FlowMonitor
   FlowMonitorHelper ();
-
   
   /// \brief Set an attribute for the to-be-created FlowMonitor object
   void SetMonitorAttribute (std::string n1, const AttributeValue &v1);
 
   /// \brief Enable flow monitoring on a set of nodes
+  /// \param nodes A NodeContainer holding the set of nodes to work with.
   Ptr<FlowMonitor> Install (NodeContainer nodes);
   /// \brief Enable flow monitoring on a single node
+  /// \param nodes A Ptr<Node> to the node on which to enable flow monitoring.
   Ptr<FlowMonitor> Install (Ptr<Node> node);
   /// \brief Enable flow monitoring on all nodes
   Ptr<FlowMonitor> InstallAll ();
--- a/src/helper/internet-stack-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/internet-stack-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -53,6 +53,10 @@
    * such as ns3::OlsrHelper
    */
   InternetStackHelper(void);
+
+  /**
+   * Destroy the InternetStackHelper
+   */
   virtual ~InternetStackHelper(void);
   InternetStackHelper (const InternetStackHelper &);
   InternetStackHelper &operator = (const InternetStackHelper &o);
@@ -195,30 +199,67 @@
   const Ipv4RoutingHelper *m_routing;
   
   /**
+   * \internal
    * \brief IPv6 routing helper.
    */
   const Ipv6RoutingHelper *m_routingv6;
 
+  /**
+   * \internal
+   */
   static void CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId);
+
+  /**
+   * \internal
+   */
   static void Cleanup (void);
+
+  /**
+   * \internal
+   */
   static void LogRxIp (std::string context, Ptr<const Packet> packet, uint32_t deviceId);
+
+  /**
+   * \internal
+   */
   static void LogTxIp (std::string context, Ptr<const Packet> packet, uint32_t deviceId);
+
+  /**
+   * \internal
+   */
   static Ptr<PcapWriter> GetStream (uint32_t nodeId, uint32_t interfaceId);
+
   struct Trace {
     uint32_t nodeId;
     uint32_t interfaceId;
     Ptr<PcapWriter> writer;
   };
 
+  /**
+   * \internal
+   */
   static void AsciiDropEventIpv4 (Ptr<AsciiWriter> writer, std::string path,
                                   Ipv4Header const &header, Ptr<const Packet> packet,
                                   Ipv4L3Protocol::DropReason reason, uint32_t interface);
+  /**
+   * \internal
+   */
   static void AsciiDropEventArp (Ptr<AsciiWriter> writer, std::string path, Ptr<const Packet> packet);
+
+  /**
+   * \internal
+   */
   static void AsciiDropEventIpv6 (Ptr<AsciiWriter> writer, std::string path,
                                   Ipv6Header const &header, Ptr<const Packet> packet,
                                   Ipv6L3Protocol::DropReason reason, uint32_t interface);
+
   static std::string m_pcapBaseFilename;
+
+  /**
+   * \internal
+   */
   static uint32_t GetNodeIndex (std::string context);
+
   static std::vector<Trace> m_traces;
 
   /**
--- a/src/helper/ipv4-address-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-address-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -176,6 +176,9 @@
   Ipv4InterfaceContainer Assign (const NetDeviceContainer &c);
 
 private:
+  /**
+   * @internal
+   */
   uint32_t NumAddressBits (uint32_t maskbits) const;
 
   uint32_t m_network;
--- a/src/helper/ipv4-global-routing-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-global-routing-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -31,9 +31,20 @@
 class Ipv4GlobalRoutingHelper  : public Ipv4RoutingHelper
 {
 public:
+  /**
+   * \brief Construct a GlobalRoutingHelper to make life easier for managing
+   * global routing tasks.
+   */
   Ipv4GlobalRoutingHelper ();
+
+  /**
+   * \brief Construct a GlobalRoutingHelper from another previously initialized
+   * instance (Copy Constructor).
+   */
   Ipv4GlobalRoutingHelper (const Ipv4GlobalRoutingHelper &);
+
   /**
+   * \internal
    * \returns pointer to clone of this Ipv4GlobalRoutingHelper
    *
    * This method is mainly for internal use by the other helpers;
@@ -50,7 +61,7 @@
   virtual Ptr<Ipv4RoutingProtocol> Create (Ptr<Node> node) const;
 
   /**
-   * @brief Build a routing database and initialize the routing tables of
+   * \brief Build a routing database and initialize the routing tables of
    * the nodes in the simulation.  Makes all nodes in the simulation into
    * routers.
    *
@@ -60,7 +71,7 @@
    */
   static void PopulateRoutingTables (void);
   /**
-   *@brief Remove all routes that were previously installed in a prior call
+   * \brief Remove all routes that were previously installed in a prior call
    * to either PopulateRoutingTables() or RecomputeRoutingTables(), and 
    * add a new set of routes.  
    * 
@@ -73,6 +84,11 @@
    */
   static void RecomputeRoutingTables (void);
 private:
+  /**
+   * \internal
+   * \brief Assignment operator declared private and not implemented to disallow
+   * assignment and prevent the compiler from happily inserting its own.
+   */
   Ipv4GlobalRoutingHelper &operator = (const Ipv4GlobalRoutingHelper &o);
 };
 
--- a/src/helper/ipv4-interface-container.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-interface-container.h	Sun Oct 04 20:52:24 2009 -0700
@@ -9,8 +9,25 @@
 namespace ns3 {
 
 /**
- * \brief keep track of a set of ipv4 interfaces.
+ * \brief holds a vector of std::pair of Ptr<Ipv4> and interface index.
  *
+ * Typically ns-3 Ipv4Interfaces are installed on devices using an Ipv4 address
+ * helper.  The helper's Assign() method takes a NetDeviceContainer which holds 
+ * some number of Ptr<NetDevice>.  For each of the NetDevices in the 
+ * NetDeviceContainer the helper will find the associated Ptr<Node> and
+ * Ptr<Ipv4>.  It makes sure that an interface exists on the node for the 
+ * device and then adds an Ipv4Address according to the address helper settings
+ * (incrementing the Ipv4Address somehow as it goes).  The helper then converts
+ * the Ptr<Ipv4> and the interface index to a std::pair and adds them to a 
+ * container -- a container of this type.
+ *
+ * The point is then to be able to implicitly associate an index into the 
+ * original NetDeviceContainer (that identifies a particular net device) with
+ * an identical index into the Ipv4InterfaceContainer that has a std::pair with
+ * the Ptr<Ipv4> and interface index you need to play with the interface.
+ *
+ * @see Ipv4AddressHelper
+ * @see Ipv4
  */
 class Ipv4InterfaceContainer
 {
@@ -27,7 +44,8 @@
   void Add (Ipv4InterfaceContainer other);
 
   /**
-   * \returns the number of interfaces stored in this Ipv4InterfaceContainer.
+   * \returns the number of Ptr<Ipv4> and interface pairs stored in this 
+   * Ipv4InterfaceContainer.
    */
   uint32_t GetN (void) const;
 
@@ -43,16 +61,52 @@
    */
   Ipv4Address GetAddress (uint32_t i, uint32_t j = 0) const;
 
+
   void SetMetric (uint32_t i, uint16_t metric);
+
   /**
+   * Manually add an entry to the container consisting of the individual parts
+   * of an entry std::pair.
+   *
+   * \param ipv4 pointer to Ipv4 object
+   * \param interface interface index of the Ipv4Interface to add to the container
+   *
+   * @see Ipv4InterfaceContainer
+   */
+  void Add (Ptr<Ipv4> ipv4, uint32_t interface);
+
+  /**
+   * Manually add an entry to the container consisting of a previously composed 
+   * entry std::pair.
+   *
    * \param ipv4 pointer to Ipv4 object
    * \param interface interface index of the Ipv4Interface to add to the container
+   *
+   * @see Ipv4InterfaceContainer
    */
-  void Add (Ptr<Ipv4> ipv4, uint32_t interface);
   void Add (std::pair<Ptr<Ipv4>, uint32_t>);
+
+  /**
+   * Manually add an entry to the container consisting of the individual parts
+   * of an entry std::pair.
+   *
+   * \param ipv4Name std:string referring to the saved name of an Ipv4 Object that
+   *        has been previously named using the Object Name Service.
+   * \param interface interface index of the Ipv4Interface to add to the container
+   *
+   * @see Ipv4InterfaceContainer
+   */
   void Add (std::string ipv4Name, uint32_t interface);
 
-  std::pair<Ptr<Ipv4>, uint32_t> Get (uint32_t) const;
+  /**
+   * Get the std::pair of an Ptr<Ipv4> and interface stored at the location 
+   * specified by the index.
+   *
+   * \param i the index of the entery to retrieve.
+   *
+   * @see Ipv4InterfaceContainer
+   */
+  std::pair<Ptr<Ipv4>, uint32_t> Get (uint32_t i) const;
 
  private:
   
--- a/src/helper/ipv4-list-routing-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-list-routing-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -35,10 +35,26 @@
 class Ipv4ListRoutingHelper : public Ipv4RoutingHelper
 {
 public:
+  /*
+   * Construct an Ipv4ListRoutingHelper used to make installing routing
+   * protocols easier.
+   */
   Ipv4ListRoutingHelper ();
+
+  /*
+   * Construct an Ipv4ListRoutingHelper used to make installing routing
+   * protocols easier.
+   */
   virtual ~Ipv4ListRoutingHelper ();
+
+  /**
+   * \brief Construct an Ipv4ListRoutingHelper from another previously 
+   * initialized instance (Copy Constructor).
+   */
   Ipv4ListRoutingHelper (const Ipv4ListRoutingHelper &);
+
   /**
+   * \internal
    * \returns pointer to clone of this Ipv4ListRoutingHelper 
    * 
    * This method is mainly for internal use by the other helpers;
@@ -65,6 +81,11 @@
    */
   virtual Ptr<Ipv4RoutingProtocol> Create (Ptr<Node> node) const;
 private:
+  /**
+   * \internal
+   * \brief Assignment operator declared private and not implemented to disallow
+   * assignment and prevent the compiler from happily inserting its own.
+   */
   Ipv4ListRoutingHelper &operator = (const Ipv4ListRoutingHelper &o);
 
   std::list<std::pair<const Ipv4RoutingHelper *,int16_t> > m_list;
--- a/src/helper/ipv4-nix-vector-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-nix-vector-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -33,13 +33,23 @@
  * ns3::InternetStackHelper::SetRoutingHelper
  *
  */
-
 class Ipv4NixVectorHelper : public Ipv4RoutingHelper
 {
 public:
+  /*
+   * Construct an Ipv4NixVectorHelper to make life easier while adding Nix-vector
+   * routing to nodes.
+   */
   Ipv4NixVectorHelper ();
+
+  /**
+   * \brief Construct an Ipv4NixVectorHelper from another previously 
+   * initialized instance (Copy Constructor).
+   */
   Ipv4NixVectorHelper (const Ipv4NixVectorHelper &);
+
   /**
+   * \internal
    * \returns pointer to clone of this Ipv4NixVectorHelper 
    * 
    * This method is mainly for internal use by the other helpers;
@@ -56,6 +66,11 @@
   virtual Ptr<Ipv4RoutingProtocol> Create (Ptr<Node> node) const;
 
 private:
+  /**
+   * \internal
+   * \brief Assignment operator declared private and not implemented to disallow
+   * assignment and prevent the compiler from happily inserting its own.
+   */
   Ipv4NixVectorHelper &operator = (const Ipv4NixVectorHelper &o);
 
   ObjectFactory m_agentFactory;
--- a/src/helper/ipv4-routing-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-routing-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -39,6 +39,9 @@
 class Ipv4RoutingHelper
 {
 public:
+  /*
+   * Destroy an instance of an Ipv4RoutingHelper
+   */
   virtual ~Ipv4RoutingHelper ();
 
   /**
--- a/src/helper/ipv4-static-routing-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv4-static-routing-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -40,9 +40,20 @@
 class Ipv4StaticRoutingHelper : public Ipv4RoutingHelper
 {
 public:
+  /*
+   * Construct an Ipv4StaticRoutingHelper object, used to make configuration
+   * of static routing easier.
+   */
   Ipv4StaticRoutingHelper ();
+
+  /**
+   * \brief Construct an Ipv4StaticRoutingHelper from another previously 
+   * initialized instance (Copy Constructor).
+   */
   Ipv4StaticRoutingHelper (const Ipv4StaticRoutingHelper &);
+
   /**
+   * \internal
    * \returns pointer to clone of this Ipv4StaticRoutingHelper
    *
    * This method is mainly for internal use by the other helpers;
@@ -58,14 +69,42 @@
    */
   virtual Ptr<Ipv4RoutingProtocol> Create (Ptr<Node> node) const;
 
+  /**
+   * Try and find the static routing protocol as either the main routing
+   * protocol or in the list of routing protocols associated with the 
+   * Ipv4 provided.
+   *
+   * \param ipv4 the Ptr<Ipv4> to search for the static routing protocol
+   */
   Ptr<Ipv4StaticRouting> GetStaticRouting (Ptr<Ipv4> ipv4) const;
 
+  /**
+   * \brief Add a multicast route to a node and net device using explicit 
+   * Ptr<Node> and Ptr<NetDevice>
+   */
   void AddMulticastRoute (Ptr<Node> n, Ipv4Address source, Ipv4Address group,  
     Ptr<NetDevice> input, NetDeviceContainer output);
+
+  /**
+   * \brief Add a multicast route to a node and device using a name string 
+   * previously associated to the node using the Object Name Service and a
+   * Ptr<NetDevice>
+   */
   void AddMulticastRoute (std::string n, Ipv4Address source, Ipv4Address group,  
     Ptr<NetDevice> input, NetDeviceContainer output);
+
+  /**
+   * \brief Add a multicast route to a node and device using a Ptr<Node> and a 
+   * name string previously associated to the device using the Object Name Service.
+   */
   void AddMulticastRoute (Ptr<Node> n, Ipv4Address source, Ipv4Address group,  
     std::string inputName, NetDeviceContainer output);
+
+  /**
+   * \brief Add a multicast route to a node and device using name strings
+   * previously associated to both the node and device using the Object Name 
+   * Service.
+   */
   void AddMulticastRoute (std::string nName, Ipv4Address source, Ipv4Address group,  
     std::string inputName, NetDeviceContainer output);
 
@@ -79,10 +118,49 @@
    * \param nd device of the node to add default route
    */
   void SetDefaultMulticastRoute (Ptr<Node> n, Ptr<NetDevice> nd);
+
+  /**
+   * \brief Add a default route to the static routing protocol to forward
+   *        packets out a particular interface
+   *
+   * Functionally equivalent to:
+   * route add 224.0.0.0 netmask 240.0.0.0 dev nd
+   * \param n node
+   * \param ndName string with name previously associated to device using the 
+   *        Object Name Service
+   */
   void SetDefaultMulticastRoute (Ptr<Node> n, std::string ndName);
+
+  /**
+   * \brief Add a default route to the static routing protocol to forward
+   *        packets out a particular interface
+   *
+   * Functionally equivalent to:
+   * route add 224.0.0.0 netmask 240.0.0.0 dev nd
+   * \param nName string with name previously associated to node using the 
+   *        Object Name Service
+   * \param nd device of the node to add default route
+   */
   void SetDefaultMulticastRoute (std::string nName, Ptr<NetDevice> nd);
+
+  /**
+   * \brief Add a default route to the static routing protocol to forward
+   *        packets out a particular interface
+   *
+   * Functionally equivalent to:
+   * route add 224.0.0.0 netmask 240.0.0.0 dev nd
+   * \param nName string with name previously associated to node using the 
+   *        Object Name Service
+   * \param ndName string with name previously associated to device using the 
+   *        Object Name Service
+   */
   void SetDefaultMulticastRoute (std::string nName, std::string ndName);
 private:
+  /**
+   * \internal
+   * \brief Assignment operator declared private and not implemented to disallow
+   * assignment and prevent the compiler from happily inserting its own.
+   */
   Ipv4StaticRoutingHelper &operator = (const Ipv4StaticRoutingHelper &o);
 
 };
--- a/src/helper/ipv6-address-helper.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv6-address-helper.h	Sun Oct 04 20:52:24 2009 -0700
@@ -81,11 +81,13 @@
 
   private:
     /**
+     * \internal
      * \brief The IPv6 network.
      */
     Ipv6Address m_network;
 
     /**
+     * \internal
      * \brief IPv6 The prefix (mask).
      */
     Ipv6Prefix m_prefix;
--- a/src/helper/ipv6-interface-container.h	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/helper/ipv6-interface-container.h	Sun Oct 04 20:52:24 2009 -0700
@@ -102,6 +102,7 @@
     typedef std::vector<std::pair<Ptr<Ipv6>, uint32_t> > InterfaceVector;
 
     /**
+     * \internal
      * \brief List of IPv6 stack and interfaces index.
      */
     InterfaceVector m_interfaces;
--- a/src/wscript	Sat Oct 03 16:21:58 2009 -0700
+++ b/src/wscript	Sun Oct 04 20:52:24 2009 -0700
@@ -76,7 +76,7 @@
     if Options.options.enable_rpath:
         conf.env.append_value('RPATH', '-Wl,-rpath=%s' % (os.path.join(blddir),))
 
-    ## Used to link the 'run-tests' program with all of ns-3 code
+    ## Used to link the 'test-runner' program with all of ns-3 code
     conf.env['NS3_MODULES'] = ['ns3-' + module.split('/')[-1] for module in all_modules]
 
 
--- a/wscript	Sat Oct 03 16:21:58 2009 -0700
+++ b/wscript	Sun Oct 04 20:52:24 2009 -0700
@@ -177,6 +177,7 @@
                    help=("Enable regression testing; only used for the 'check' target"),
                    default=False, dest='regression', action="store_true")
     opt.add_option('--check',
+                   help=('DEPRECATED (run ./test.py)'),
                    help=("Enable unit testing"),
                    default=False, dest='check', action="store_true")
     opt.add_option('--regression-generate',
@@ -566,11 +567,11 @@
                                  " (--with-regression-traces configure option)")
         regression.run_regression(bld, regression_traces)
 
-    if Options.options.check:
-        Options.options.compile_targets += ',run-tests'
-        if env['ENABLE_PYTHON_BINDINGS']:
-            Options.options.compile_targets += ',ns3module,pybindgen-command'
-        _run_check(bld)
+#    if Options.options.check:
+#        Options.options.compile_targets += ',run-tests'
+#        if env['ENABLE_PYTHON_BINDINGS']:
+#            Options.options.compile_targets += ',ns3module,pybindgen-command'
+#        _run_check(bld)
 
     if Options.options.doxygen_no_build:
         doxygen()
@@ -597,7 +598,10 @@
         raise SystemExit(0)
 
     if Options.options.shell:
-        raise Utils.WafError("Run `./waf shell' now, instead of `./waf shell'")
+        raise Utils.WafError("Please run `./waf shell' now, instead of `./waf --shell'")
+
+    if Options.options.check:
+        raise Utils.WafError("Please run `./test.py' now, instead of `./waf --check'")
 
     if Options.options.doxygen:
         doxygen()
@@ -611,9 +615,10 @@
 
 
 check_context = Build.BuildContext
+
 def check(bld):
-    """run the NS-3 unit tests (deprecated in favour of --check option)"""
-    raise Utils.WafError("Please run `./waf --check' instead.")
+    """run the NS-3 unit tests (deprecated in favour of test.py)"""
+    raise Utils.WafError("Please run `./test.py' now, instead of './waf check'")
 
 
 class print_introspected_doxygen_task(Task.TaskBase):
@@ -666,112 +671,110 @@
         wutils.run_argv([self.bld.env['PYTHON'], os.path.join("..", "utils", "python-unit-tests.py")],
                         self.bld.env, proc_env, force_no_valgrind=True)
 
-
-class run_a_unit_test_task(Task.TaskBase):
-    after = 'cc cxx cc_link cxx_link'
-    color = 'BLUE'
-
-    def __init__(self, bld, name_of_test):
-        self.bld = bld
-        super(run_a_unit_test_task, self).__init__(generator=self)
-        self.name_of_test = name_of_test
-        try:
-            program_obj = wutils.find_program("run-tests", self.bld.env)
-        except ValueError, ex:
-            raise Utils.WafError(str(ex))
-        program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj))
-        self.program_path = program_node.abspath(self.bld.env)
-
-    def __str__(self):
-        return 'run-unit-test(%s)\n' % self.name_of_test
-
-    def runnable_status(self):
-        return Task.RUN_ME
-
-    def run(self):
-        #print repr([self.program_path, self.name_of_test])
-        try:
-            self.retval = wutils.run_argv([self.program_path, self.name_of_test], self.bld.env)
-        except Utils.WafError:
-            self.retval = 1
-        #print "running test %s: exit with %i" % (self.name_of_test, retval)
-        return 0
-
-class get_list_of_unit_tests_task(Task.TaskBase):
-    after = 'cc cxx cc_link cxx_link'
-    color = 'BLUE'
-
-    def __init__(self, bld):
-        self.bld = bld
-        super(get_list_of_unit_tests_task, self).__init__(generator=self)
-        self.tests = []
-
-    def __str__(self):
-        return 'get-unit-tests-list\n'
-
-    def runnable_status(self):
-        return Task.RUN_ME
-
-    def run(self):
-        try:
-            program_obj = wutils.find_program("run-tests", self.bld.env)
-        except ValueError, ex:
-            raise Utils.WafError(str(ex))
-        program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj))
-        program_path = program_node.abspath(self.bld.env)
-        proc = subprocess.Popen([program_path, "--ListTests"], stdout=subprocess.PIPE,
-                                env=wutils.get_proc_env())
-        self.tests = [l.rstrip() for l in proc.stdout.readlines()]
-        retval = proc.wait()
-        if retval:
-            return retval
-        test_tasks = []
-        for name_of_test in self.tests:
-            test_tasks.append(run_a_unit_test_task(self.bld, name_of_test))
-        collector = collect_unit_test_results_task(self.bld, list(test_tasks))
-        collector.run_after = list(test_tasks)
-        self.more_tasks = [collector] + test_tasks
-        
-
-class collect_unit_test_results_task(Task.TaskBase):
-    after = 'run_a_unit_test_task'
-    color = 'BLUE'
-
-    def __init__(self, bld, test_tasks):
-        self.bld = bld
-        super(collect_unit_test_results_task, self).__init__(generator=self)
-        self.test_tasks = test_tasks
-
-    def __str__(self):
-        return 'collect-unit-tests-results\n'
-
-    def runnable_status(self):
-        for t in self.run_after:
-            if not t.hasrun:
-                return Task.ASK_LATER
-        return Task.RUN_ME
-
-    def run(self):
-        failed_tasks = []
-        for task in self.test_tasks:
-            if task.retval:
-                failed_tasks.append(task)
-        if failed_tasks:
-            print "C++ UNIT TESTS: %i tests passed, %i failed (%s)." % \
-                (len(self.test_tasks) - len(failed_tasks), len(failed_tasks),
-                 ', '.join(t.name_of_test for t in failed_tasks))
-            return 1
-        else:
-            print "C++ UNIT TESTS: all %i tests passed." % (len(self.test_tasks),)
-            return 0
-
-
-def _run_check(bld):
-    task = get_list_of_unit_tests_task(bld)
-    print_introspected_doxygen_task(bld)
-    if bld.env['ENABLE_PYTHON_BINDINGS']:
-        run_python_unit_tests_task(bld)
-
+#class run_a_unit_test_task(Task.TaskBase):
+#    after = 'cc cxx cc_link cxx_link'
+#    color = 'BLUE'
+#
+#    def __init__(self, bld, name_of_test):
+#        self.bld = bld
+#        super(run_a_unit_test_task, self).__init__(generator=self)
+#        self.name_of_test = name_of_test
+#        try:
+#            program_obj = wutils.find_program("run-tests", self.bld.env)
+#        except ValueError, ex:
+#            raise Utils.WafError(str(ex))
+#        program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj))
+#        self.program_path = program_node.abspath(self.bld.env)
+#
+#    def __str__(self):
+#        return 'run-unit-test(%s)\n' % self.name_of_test
+#
+#    def runnable_status(self):
+#        return Task.RUN_ME
+#
+#    def run(self):
+#        #print repr([self.program_path, self.name_of_test])
+#        try:
+#            self.retval = wutils.run_argv([self.program_path, self.name_of_test], self.bld.env)
+#        except Utils.WafError:
+#            self.retval = 1
+#        #print "running test %s: exit with %i" % (self.name_of_test, retval)
+#        return 0
+#
+#class get_list_of_unit_tests_task(Task.TaskBase):
+#    after = 'cc cxx cc_link cxx_link'
+#    color = 'BLUE'
+#
+#    def __init__(self, bld):
+#        self.bld = bld
+#        super(get_list_of_unit_tests_task, self).__init__(generator=self)
+#        self.tests = []
+#
+#    def __str__(self):
+#        return 'get-unit-tests-list\n'
+#
+#    def runnable_status(self):
+#        return Task.RUN_ME
+#
+#    def run(self):
+#        try:
+#            program_obj = wutils.find_program("run-tests", self.bld.env)
+#        except ValueError, ex:
+#            raise Utils.WafError(str(ex))
+#        program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj))
+#        program_path = program_node.abspath(self.bld.env)
+#        proc = subprocess.Popen([program_path, "--ListTests"], stdout=subprocess.PIPE,
+#                                env=wutils.get_proc_env())
+#        self.tests = [l.rstrip() for l in proc.stdout.readlines()]
+#        retval = proc.wait()
+#        if retval:
+#            return retval
+#        test_tasks = []
+#        for name_of_test in self.tests:
+#            test_tasks.append(run_a_unit_test_task(self.bld, name_of_test))
+#        collector = collect_unit_test_results_task(self.bld, list(test_tasks))
+#        collector.run_after = list(test_tasks)
+#        self.more_tasks = [collector] + test_tasks
+#        
+#
+#class collect_unit_test_results_task(Task.TaskBase):
+#    after = 'run_a_unit_test_task'
+#    color = 'BLUE'
+#
+#    def __init__(self, bld, test_tasks):
+#        self.bld = bld
+#        super(collect_unit_test_results_task, self).__init__(generator=self)
+#        self.test_tasks = test_tasks
+#
+#    def __str__(self):
+#        return 'collect-unit-tests-results\n'
+#
+#    def runnable_status(self):
+#        for t in self.run_after:
+#            if not t.hasrun:
+#                return Task.ASK_LATER
+#        return Task.RUN_ME
+#
+#    def run(self):
+#        failed_tasks = []
+#        for task in self.test_tasks:
+#            if task.retval:
+#                failed_tasks.append(task)
+#        if failed_tasks:
+#            print "C++ UNIT TESTS: %i tests passed, %i failed (%s)." % \
+#                (len(self.test_tasks) - len(failed_tasks), len(failed_tasks),
+#                 ', '.join(t.name_of_test for t in failed_tasks))
+#            return 1
+#        else:
+#            print "C++ UNIT TESTS: all %i tests passed." % (len(self.test_tasks),)
+#            return 0
+#
+#
+#def _run_check(bld):
+#    task = get_list_of_unit_tests_task(bld)
+#    print_introspected_doxygen_task(bld)
+#    if bld.env['ENABLE_PYTHON_BINDINGS']:
+#        run_python_unit_tests_task(bld)
 
 def check_shell(bld):
     if 'NS3_MODULE_PATH' not in os.environ: