improve the auto-generated doxygen output.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 17 Apr 2008 15:30:18 -0700
changeset 29699d05d2a95dfa
parent 2968 d6b2d00acab2
child 2970 0384d6f6cca1
improve the auto-generated doxygen output.
doc/doxygen.conf
src/common/data-rate.h
src/core/attribute-helper.h
src/core/attribute.h
src/core/boolean.cc
src/core/double.cc
src/core/double.h
src/core/enum.cc
src/core/enum.h
src/core/integer.cc
src/core/integer.h
src/core/object-factory.h
src/core/object-vector.h
src/core/pointer.h
src/core/random-variable.h
src/core/string.cc
src/core/string.h
src/core/type-id.h
src/core/uinteger.cc
src/devices/wifi/ssid.h
src/devices/wifi/wifi-mode.h
src/mobility/rectangle.h
src/mobility/vector.h
src/node/address.h
src/node/ipv4-address.h
src/node/mac48-address.h
src/simulator/nstime.h
utils/print-introspected-doxygen.cc
     1.1 --- a/doc/doxygen.conf	Thu Apr 17 14:33:45 2008 -0700
     1.2 +++ b/doc/doxygen.conf	Thu Apr 17 15:30:18 2008 -0700
     1.3 @@ -1046,13 +1046,13 @@
     1.4  # compilation will be performed. Macro expansion can be done in a controlled 
     1.5  # way by setting EXPAND_ONLY_PREDEF to YES.
     1.6  
     1.7 -MACRO_EXPANSION        = NO
     1.8 +MACRO_EXPANSION        = YES
     1.9  
    1.10  # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
    1.11  # then the macro expansion is limited to the macros specified with the 
    1.12  # PREDEFINED and EXPAND_AS_DEFINED tags.
    1.13  
    1.14 -EXPAND_ONLY_PREDEF     = NO
    1.15 +EXPAND_ONLY_PREDEF     = YES
    1.16  
    1.17  # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
    1.18  # in the INCLUDE_PATH (see below) will be search if a #include is found.
    1.19 @@ -1089,7 +1089,9 @@
    1.20  # The macro definition that is found in the sources will be used. 
    1.21  # Use the PREDEFINED tag if you want to use a different macro definition.
    1.22  
    1.23 -EXPAND_AS_DEFINED      = 
    1.24 +EXPAND_AS_DEFINED      = ATTRIBUTE_VALUE_DEFINE \
    1.25 +		       ATTRIBUTE_VALUE_DEFINE_WITH_NAME \
    1.26 +		       ATTRIBUTE_HELPER_HEADER_2
    1.27  
    1.28  # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
    1.29  # doxygen's preprocessor will remove all function-like macros that are alone 
     2.1 --- a/src/common/data-rate.h	Thu Apr 17 14:33:45 2008 -0700
     2.2 +++ b/src/common/data-rate.h	Thu Apr 17 15:30:18 2008 -0700
     2.3 @@ -89,6 +89,11 @@
     2.4  std::ostream &operator << (std::ostream &os, const DataRate &rate);
     2.5  std::istream &operator >> (std::istream &is, DataRate &rate);
     2.6  
     2.7 +/**
     2.8 + * \class ns3::DataRateValue
     2.9 + * \brief hold objects of type ns3::DataRate
    2.10 + */
    2.11 +
    2.12  ATTRIBUTE_HELPER_HEADER_2 (DataRate);
    2.13  
    2.14  /**
     3.1 --- a/src/core/attribute-helper.h	Thu Apr 17 14:33:45 2008 -0700
     3.2 +++ b/src/core/attribute-helper.h	Thu Apr 17 15:30:18 2008 -0700
     3.3 @@ -29,21 +29,21 @@
     3.4  
     3.5  template <typename T, typename BASE>
     3.6  Ptr<AttributeChecker>
     3.7 -MakeSimpleAttributeChecker (std::string name)
     3.8 +MakeSimpleAttributeChecker (std::string name, std::string underlying)
     3.9  {
    3.10    struct SimpleAttributeChecker : public BASE
    3.11    {
    3.12      virtual bool Check (const AttributeValue &value) const {
    3.13        return dynamic_cast<const T *> (&value) != 0;
    3.14      }
    3.15 -    virtual std::string GetType (void) const {
    3.16 +    virtual std::string GetValueTypeName (void) const {
    3.17        return m_type;
    3.18      }
    3.19 -    virtual bool HasTypeConstraints (void) const {
    3.20 -      return false;
    3.21 +    virtual bool HasUnderlyingTypeInformation (void) const {
    3.22 +      return true;
    3.23      }
    3.24 -    virtual std::string GetTypeConstraints (void) const {
    3.25 -      return "";
    3.26 +    virtual std::string GetUnderlyingTypeInformation (void) const {
    3.27 +      return m_underlying;
    3.28      }
    3.29      virtual Ptr<AttributeValue> Create (void) const {
    3.30        return ns3::Create<T> ();
    3.31 @@ -59,8 +59,10 @@
    3.32        return true;
    3.33      }
    3.34      std::string m_type;
    3.35 +    std::string m_underlying;
    3.36    } *checker = new SimpleAttributeChecker ();
    3.37    checker->m_type = name;
    3.38 +  checker->m_underlying = underlying;
    3.39    return Ptr<AttributeChecker> (checker, false);
    3.40  }
    3.41  
    3.42 @@ -108,7 +110,7 @@
    3.43      return MakeAccessorHelper<type##Value> (a1, a2);			\
    3.44    }
    3.45  
    3.46 -#define ATTRIBUTE_VALUE_DEFINE_WITH_NAME(type,name) \
    3.47 +#define ATTRIBUTE_VALUE_DEFINE_WITH_NAME(type,name)                     \
    3.48    class name##Value : public AttributeValue				\
    3.49    {									\
    3.50    public:								\
    3.51 @@ -210,9 +212,16 @@
    3.52  #define ATTRIBUTE_CHECKER_IMPLEMENT(type)				\
    3.53    Ptr<const AttributeChecker> Make##type##Checker (void)		\
    3.54    {									\
    3.55 -    return MakeSimpleAttributeChecker<type##Value,type##Checker> (#type);	\
    3.56 +    return MakeSimpleAttributeChecker<type##Value,type##Checker> (#type "Value", #type); \
    3.57    }									\
    3.58  
    3.59 +#define ATTRIBUTE_CHECKER_IMPLEMENT_WITH_NAME(type,name)                    \
    3.60 +  Ptr<const AttributeChecker> Make##type##Checker (void)		\
    3.61 +  {									\
    3.62 +    return MakeSimpleAttributeChecker<type##Value,type##Checker> (#type "Value", name); \
    3.63 +  }									\
    3.64 +
    3.65 +
    3.66  /**
    3.67   * \ingroup AttributeHelper
    3.68   * \param type the name of the class
     4.1 --- a/src/core/attribute.h	Thu Apr 17 14:33:45 2008 -0700
     4.2 +++ b/src/core/attribute.h	Thu Apr 17 15:30:18 2008 -0700
     4.3 @@ -145,9 +145,28 @@
     4.4     *          false otherwise.
     4.5     */
     4.6    virtual bool Check (const AttributeValue &value) const = 0;
     4.7 -  virtual std::string GetType (void) const = 0;
     4.8 -  virtual bool HasTypeConstraints (void) const = 0;
     4.9 -  virtual std::string GetTypeConstraints (void) const = 0;
    4.10 +  /**
    4.11 +   * \returns the c++ fully-qualified typename of the subclass
    4.12 +   *          of the ns3::AttributeValue base class which is associated
    4.13 +   *          to this checker.
    4.14 +   *
    4.15 +   * A typical return value here is FooValue where Foo is the name of the
    4.16 +   * type being wrapped.
    4.17 +   */
    4.18 +  virtual std::string GetValueTypeName (void) const = 0;
    4.19 +  /**
    4.20 +   * \returns true if this checker has information about the underlying
    4.21 +   *          C++ type, false otherwise.
    4.22 +   *
    4.23 +   * If this method returns false, the return value of the GetUnderlyingTypeInformation
    4.24 +   * method cannot be relied upon.
    4.25 +   */
    4.26 +  virtual bool HasUnderlyingTypeInformation (void) const = 0;
    4.27 +  /**
    4.28 +   * \returns a human-readable representation of information about
    4.29 +   *          the underlying C++ type.
    4.30 +   */
    4.31 +  virtual std::string GetUnderlyingTypeInformation (void) const = 0;
    4.32    /**
    4.33     * \returns a new instance of an AttributeValue (wrapper in an Attribute 
    4.34     *          instance) which matches the type of the underlying attribute.
     5.1 --- a/src/core/boolean.cc	Thu Apr 17 14:33:45 2008 -0700
     5.2 +++ b/src/core/boolean.cc	Thu Apr 17 15:30:18 2008 -0700
     5.3 @@ -97,6 +97,6 @@
     5.4  }
     5.5  
     5.6  
     5.7 -ATTRIBUTE_CHECKER_IMPLEMENT (Boolean);
     5.8 +ATTRIBUTE_CHECKER_IMPLEMENT_WITH_NAME (Boolean,"bool");
     5.9  
    5.10  } // namespace ns3
     6.1 --- a/src/core/double.cc	Thu Apr 17 14:33:45 2008 -0700
     6.2 +++ b/src/core/double.cc	Thu Apr 17 15:30:18 2008 -0700
     6.3 @@ -43,15 +43,15 @@
     6.4  	}
     6.5        return v->Get () >= m_minValue && v->Get () <= m_maxValue;
     6.6      }
     6.7 -    virtual std::string GetType (void) const {
     6.8 -      return m_name;
     6.9 +    virtual std::string GetValueTypeName (void) const {
    6.10 +      return "ns3::DoubleValue";
    6.11      }
    6.12 -    virtual bool HasTypeConstraints (void) const {
    6.13 +    virtual bool HasUnderlyingTypeInformation (void) const {
    6.14        return true;
    6.15      }
    6.16 -    virtual std::string GetTypeConstraints (void) const {
    6.17 +    virtual std::string GetUnderlyingTypeInformation (void) const {
    6.18        std::ostringstream oss;
    6.19 -      oss << m_minValue << ":" << m_maxValue;
    6.20 +      oss << m_name << " " << m_minValue << ":" << m_maxValue;
    6.21        return oss.str ();
    6.22      }
    6.23      virtual Ptr<AttributeValue> Create (void) const {
     7.1 --- a/src/core/double.h	Thu Apr 17 14:33:45 2008 -0700
     7.2 +++ b/src/core/double.h	Thu Apr 17 15:30:18 2008 -0700
     7.3 @@ -27,7 +27,7 @@
     7.4  namespace ns3 {
     7.5  
     7.6  /**
     7.7 - * \class DoubleValue
     7.8 + * \class ns3::DoubleValue
     7.9   * \brief Hold an floating point type
    7.10   *
    7.11   * \anchor double
     8.1 --- a/src/core/enum.cc	Thu Apr 17 14:33:45 2008 -0700
     8.2 +++ b/src/core/enum.cc	Thu Apr 17 15:30:18 2008 -0700
     8.3 @@ -109,17 +109,17 @@
     8.4    return false;
     8.5  }
     8.6  std::string 
     8.7 -EnumChecker::GetType (void) const
     8.8 +EnumChecker::GetValueTypeName (void) const
     8.9  {
    8.10 -  return "EnumValue";
    8.11 +  return "ns3::EnumValue";
    8.12  }
    8.13  bool 
    8.14 -EnumChecker::HasTypeConstraints (void) const
    8.15 +EnumChecker::HasUnderlyingTypeInformation (void) const
    8.16  {
    8.17    return true;
    8.18  }
    8.19  std::string 
    8.20 -EnumChecker::GetTypeConstraints (void) const
    8.21 +EnumChecker::GetUnderlyingTypeInformation (void) const
    8.22  {
    8.23    std::ostringstream oss;
    8.24    for (ValueSet::const_iterator i = m_valueSet.begin (); i != m_valueSet.end ();)
     9.1 --- a/src/core/enum.h	Thu Apr 17 14:33:45 2008 -0700
     9.2 +++ b/src/core/enum.h	Thu Apr 17 15:30:18 2008 -0700
     9.3 @@ -57,9 +57,9 @@
     9.4    void Add (int v, std::string name);
     9.5  
     9.6    virtual bool Check (const AttributeValue &value) const;
     9.7 -  virtual std::string GetType (void) const;
     9.8 -  virtual bool HasTypeConstraints (void) const;
     9.9 -  virtual std::string GetTypeConstraints (void) const;
    9.10 +  virtual std::string GetValueTypeName (void) const;
    9.11 +  virtual bool HasUnderlyingTypeInformation (void) const;
    9.12 +  virtual std::string GetUnderlyingTypeInformation (void) const;
    9.13    virtual Ptr<AttributeValue> Create (void) const;
    9.14    virtual bool Copy (const AttributeValue &src, AttributeValue &dst) const;
    9.15  
    10.1 --- a/src/core/integer.cc	Thu Apr 17 14:33:45 2008 -0700
    10.2 +++ b/src/core/integer.cc	Thu Apr 17 15:30:18 2008 -0700
    10.3 @@ -44,15 +44,15 @@
    10.4  	}
    10.5        return v->Get () >= m_minValue && v->Get () <= m_maxValue;
    10.6      }
    10.7 -    virtual std::string GetType (void) const {
    10.8 -      return m_name;
    10.9 +    virtual std::string GetValueTypeName (void) const {
   10.10 +      return "ns3::IntegerValue";
   10.11      }
   10.12 -    virtual bool HasTypeConstraints (void) const {
   10.13 +    virtual bool HasUnderlyingTypeInformation (void) const {
   10.14        return true;
   10.15      }
   10.16 -    virtual std::string GetTypeConstraints (void) const {
   10.17 +    virtual std::string GetUnderlyingTypeInformation (void) const {
   10.18        std::ostringstream oss;
   10.19 -      oss << m_minValue << ":" << m_maxValue;
   10.20 +      oss << m_name << " " << m_minValue << ":" << m_maxValue;
   10.21        return oss.str ();
   10.22      }
   10.23      virtual Ptr<AttributeValue> Create (void) const {
    11.1 --- a/src/core/integer.h	Thu Apr 17 14:33:45 2008 -0700
    11.2 +++ b/src/core/integer.h	Thu Apr 17 15:30:18 2008 -0700
    11.3 @@ -27,7 +27,7 @@
    11.4  namespace ns3 {
    11.5  
    11.6  /**
    11.7 - * \class IntegerValue
    11.8 + * \class ns3::IntegerValue
    11.9   * \brief Hold a signed integer type
   11.10   *
   11.11   * \anchor int8_t
    12.1 --- a/src/core/object-factory.h	Thu Apr 17 14:33:45 2008 -0700
    12.2 +++ b/src/core/object-factory.h	Thu Apr 17 15:30:18 2008 -0700
    12.3 @@ -89,6 +89,11 @@
    12.4  std::ostream & operator << (std::ostream &os, const ObjectFactory &factory);
    12.5  std::istream & operator >> (std::istream &is, ObjectFactory &factory);
    12.6  
    12.7 +/**
    12.8 + * \class ns3::ObjectFactoryValue
    12.9 + * \brief hold objects of type ns3::ObjectFactory
   12.10 + */
   12.11 +
   12.12  ATTRIBUTE_HELPER_HEADER_2 (ObjectFactory);
   12.13  
   12.14  } // namespace ns3
    13.1 --- a/src/core/object-vector.h	Thu Apr 17 14:33:45 2008 -0700
    13.2 +++ b/src/core/object-vector.h	Thu Apr 17 15:30:18 2008 -0700
    13.3 @@ -87,13 +87,13 @@
    13.4    virtual bool Check (const AttributeValue &value) const {
    13.5      return dynamic_cast<const ObjectVectorValue *> (&value) != 0;
    13.6    }
    13.7 -  virtual std::string GetType (void) const {
    13.8 +  virtual std::string GetValueTypeName (void) const {
    13.9      return "ns3::ObjectVectorValue";
   13.10    }
   13.11 -  virtual bool HasTypeConstraints (void) const {
   13.12 +  virtual bool HasUnderlyingTypeInformation (void) const {
   13.13      return true;
   13.14    }
   13.15 -  virtual std::string GetTypeConstraints (void) const {
   13.16 +  virtual std::string GetUnderlyingTypeInformation (void) const {
   13.17      return T::GetTypeId ().GetName ();
   13.18    }
   13.19    virtual Ptr<AttributeValue> Create (void) const {
    14.1 --- a/src/core/pointer.h	Thu Apr 17 14:33:45 2008 -0700
    14.2 +++ b/src/core/pointer.h	Thu Apr 17 15:30:18 2008 -0700
    14.3 @@ -25,6 +25,9 @@
    14.4  
    14.5  namespace ns3 {
    14.6  
    14.7 +/**
    14.8 + * \brief hold objects of type Ptr<T>
    14.9 + */
   14.10  class PointerValue : public AttributeValue
   14.11  {
   14.12  public:
   14.13 @@ -109,17 +112,16 @@
   14.14        }
   14.15      return true;
   14.16    }
   14.17 -  virtual std::string GetType (void) const {
   14.18 -    // XXX: we should be able to return better information
   14.19 +  virtual std::string GetValueTypeName (void) const {
   14.20 +    return "ns3::PointerValue";
   14.21 +  }
   14.22 +  virtual bool HasUnderlyingTypeInformation (void) const {
   14.23 +    return true;
   14.24 +  }
   14.25 +  virtual std::string GetUnderlyingTypeInformation (void) const {
   14.26      TypeId tid = T::GetTypeId ();
   14.27      return "Ptr< " + tid.GetName () + " >";
   14.28    }
   14.29 -  virtual bool HasTypeConstraints (void) const {
   14.30 -    return false;
   14.31 -  }
   14.32 -  virtual std::string GetTypeConstraints (void) const {
   14.33 -    return "";
   14.34 -  }
   14.35    virtual Ptr<AttributeValue> Create (void) const {
   14.36      return ns3::Create<PointerValue> ();
   14.37    }
    15.1 --- a/src/core/random-variable.h	Thu Apr 17 14:33:45 2008 -0700
    15.2 +++ b/src/core/random-variable.h	Thu Apr 17 15:30:18 2008 -0700
    15.3 @@ -662,6 +662,11 @@
    15.4  std::ostream &operator << (std::ostream &os, const RandomVariable &var);
    15.5  std::istream &operator >> (std::istream &os, RandomVariable &var);
    15.6  
    15.7 +/**
    15.8 + * \class ns3::RandomVariableValue
    15.9 + * \brief hold objects of type ns3::RandomVariable
   15.10 + */
   15.11 +
   15.12  ATTRIBUTE_VALUE_DEFINE (RandomVariable);
   15.13  ATTRIBUTE_CHECKER_DEFINE (RandomVariable);
   15.14  ATTRIBUTE_ACCESSOR_DEFINE (RandomVariable);
    16.1 --- a/src/core/string.cc	Thu Apr 17 14:33:45 2008 -0700
    16.2 +++ b/src/core/string.cc	Thu Apr 17 15:30:18 2008 -0700
    16.3 @@ -2,7 +2,7 @@
    16.4  
    16.5  namespace ns3 {
    16.6  
    16.7 -ATTRIBUTE_CHECKER_IMPLEMENT (String);
    16.8 +ATTRIBUTE_CHECKER_IMPLEMENT_WITH_NAME (String, "std::string");
    16.9  ATTRIBUTE_CONVERTER_IMPLEMENT (String);
   16.10  ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME (std::string, String);
   16.11  
    17.1 --- a/src/core/string.h	Thu Apr 17 14:33:45 2008 -0700
    17.2 +++ b/src/core/string.h	Thu Apr 17 15:30:18 2008 -0700
    17.3 @@ -7,7 +7,7 @@
    17.4  namespace ns3 {
    17.5  
    17.6  /**
    17.7 - * \class StringValue
    17.8 + * \class ns3::StringValue
    17.9   * \brief hold variables of type string
   17.10   *
   17.11   * This class can be used to hold variables of type string,
    18.1 --- a/src/core/type-id.h	Thu Apr 17 14:33:45 2008 -0700
    18.2 +++ b/src/core/type-id.h	Thu Apr 17 15:30:18 2008 -0700
    18.3 @@ -380,6 +380,11 @@
    18.4  bool operator != (TypeId a, TypeId b);
    18.5  bool operator <  (TypeId a, TypeId b);
    18.6  
    18.7 +/**
    18.8 + * \class ns3::TypeIdValue
    18.9 + * \brief hold objects of type ns3::TypeId
   18.10 + */
   18.11 +
   18.12  
   18.13  ATTRIBUTE_HELPER_HEADER_2 (TypeId);
   18.14  
    19.1 --- a/src/core/uinteger.cc	Thu Apr 17 14:33:45 2008 -0700
    19.2 +++ b/src/core/uinteger.cc	Thu Apr 17 15:30:18 2008 -0700
    19.3 @@ -43,15 +43,15 @@
    19.4  	}
    19.5        return v->Get () >= m_minValue && v->Get () <= m_maxValue;
    19.6      }
    19.7 -    virtual std::string GetType (void) const {
    19.8 -      return m_name;
    19.9 +    virtual std::string GetValueTypeName (void) const {
   19.10 +      return "ns3::UintegerValue";
   19.11      }
   19.12 -    virtual bool HasTypeConstraints (void) const {
   19.13 +    virtual bool HasUnderlyingTypeInformation (void) const {
   19.14        return true;
   19.15      }
   19.16 -    virtual std::string GetTypeConstraints (void) const {
   19.17 +    virtual std::string GetUnderlyingTypeInformation (void) const {
   19.18        std::ostringstream oss;
   19.19 -      oss << m_minValue << ":" << m_maxValue;
   19.20 +      oss << m_name << " " << m_minValue << ":" << m_maxValue;
   19.21        return oss.str ();
   19.22      }
   19.23      virtual Ptr<AttributeValue> Create (void) const {
    20.1 --- a/src/devices/wifi/ssid.h	Thu Apr 17 14:33:45 2008 -0700
    20.2 +++ b/src/devices/wifi/ssid.h	Thu Apr 17 15:30:18 2008 -0700
    20.3 @@ -58,6 +58,11 @@
    20.4  std::ostream &operator << (std::ostream &os, const Ssid &ssid);
    20.5  std::istream &operator >> (std::istream &is, Ssid &ssid);
    20.6  
    20.7 +/**
    20.8 + * \class ns3::SsidValue
    20.9 + * \brief hold objects of type ns3::Ssid
   20.10 + */
   20.11 +
   20.12  ATTRIBUTE_HELPER_HEADER_2 (Ssid);
   20.13  
   20.14  } // namespace ns3
    21.1 --- a/src/devices/wifi/wifi-mode.h	Thu Apr 17 14:33:45 2008 -0700
    21.2 +++ b/src/devices/wifi/wifi-mode.h	Thu Apr 17 15:30:18 2008 -0700
    21.3 @@ -118,6 +118,11 @@
    21.4  std::ostream & operator << (std::ostream & os, const WifiMode &mode);
    21.5  std::istream & operator >> (std::istream &is, WifiMode &mode);
    21.6  
    21.7 +/**
    21.8 + * \class ns3::WifiModeValue
    21.9 + * \brief hold objects of type ns3::WifiMode
   21.10 + */
   21.11 +
   21.12  ATTRIBUTE_HELPER_HEADER_2 (WifiMode);
   21.13  
   21.14  /**
    22.1 --- a/src/mobility/rectangle.h	Thu Apr 17 14:33:45 2008 -0700
    22.2 +++ b/src/mobility/rectangle.h	Thu Apr 17 15:30:18 2008 -0700
    22.3 @@ -68,6 +68,11 @@
    22.4  std::ostream &operator << (std::ostream &os, const Rectangle &rectangle);
    22.5  std::istream &operator >> (std::istream &is, Rectangle &rectangle);
    22.6  
    22.7 +/**
    22.8 + * \class ns3::RectangleValue
    22.9 + * \brief hold objects of type ns3::Rectangle
   22.10 + */
   22.11 +
   22.12  ATTRIBUTE_HELPER_HEADER_2 (Rectangle);
   22.13  
   22.14  } // namespace ns3
    23.1 --- a/src/mobility/vector.h	Thu Apr 17 14:33:45 2008 -0700
    23.2 +++ b/src/mobility/vector.h	Thu Apr 17 15:30:18 2008 -0700
    23.3 @@ -63,6 +63,11 @@
    23.4  
    23.5  double CalculateDistance (const Vector &a, const Vector &b);
    23.6  
    23.7 +/**
    23.8 + * \class ns3::VectorValue
    23.9 + * \brief hold objects of type ns3::Vector
   23.10 + */
   23.11 +
   23.12  ATTRIBUTE_HELPER_HEADER_2 (Vector);
   23.13  
   23.14  std::ostream &operator << (std::ostream &os, const Vector &vector);
    24.1 --- a/src/node/address.h	Thu Apr 17 14:33:45 2008 -0700
    24.2 +++ b/src/node/address.h	Thu Apr 17 15:30:18 2008 -0700
    24.3 @@ -166,6 +166,11 @@
    24.4    uint8_t m_data[MAX_SIZE];
    24.5  };
    24.6  
    24.7 +/**
    24.8 + * \class ns3::AddressValue
    24.9 + * \brief hold objects of type ns3::Address
   24.10 + */
   24.11 +
   24.12  ATTRIBUTE_HELPER_HEADER_2 (Address);
   24.13  
   24.14  bool operator == (const Address &a, const Address &b);
    25.1 --- a/src/node/ipv4-address.h	Thu Apr 17 14:33:45 2008 -0700
    25.2 +++ b/src/node/ipv4-address.h	Thu Apr 17 15:30:18 2008 -0700
    25.3 @@ -185,6 +185,15 @@
    25.4    uint32_t m_mask;
    25.5  };
    25.6  
    25.7 +/**
    25.8 + * \class ns3::Ipv4AddressValue
    25.9 + * \brief hold objects of type ns3::Ipv4Address
   25.10 + */
   25.11 +/**
   25.12 + * \class ns3::Ipv4MaskValue
   25.13 + * \brief hold objects of type ns3::Ipv4Mask
   25.14 + */
   25.15 +
   25.16  ATTRIBUTE_HELPER_HEADER_2 (Ipv4Address);
   25.17  ATTRIBUTE_HELPER_HEADER_2 (Ipv4Mask);
   25.18  
    26.1 --- a/src/node/mac48-address.h	Thu Apr 17 14:33:45 2008 -0700
    26.2 +++ b/src/node/mac48-address.h	Thu Apr 17 15:30:18 2008 -0700
    26.3 @@ -112,6 +112,11 @@
    26.4    uint8_t m_address[6];
    26.5  };
    26.6  
    26.7 +/**
    26.8 + * \class ns3::Mac48AddressValue
    26.9 + * \brief hold objects of type ns3::Mac48Address
   26.10 + */
   26.11 +
   26.12  ATTRIBUTE_HELPER_HEADER_2 (Mac48Address);
   26.13  
   26.14  bool operator == (const Mac48Address &a, const Mac48Address &b);
    27.1 --- a/src/simulator/nstime.h	Thu Apr 17 14:33:45 2008 -0700
    27.2 +++ b/src/simulator/nstime.h	Thu Apr 17 15:30:18 2008 -0700
    27.3 @@ -667,6 +667,12 @@
    27.4  typedef TimeUnit<-1> TimeInvert;
    27.5  typedef TimeUnit<2> TimeSquare;
    27.6  
    27.7 +/**
    27.8 + * \class ns3::TimeValue
    27.9 + * \brief hold objects of type ns3::Time
   27.10 + */
   27.11 +
   27.12 +
   27.13  ATTRIBUTE_ACCESSOR_DEFINE (Time);
   27.14  ATTRIBUTE_VALUE_DEFINE (Time);
   27.15  ATTRIBUTE_CHECKER_DEFINE (Time);
    28.1 --- a/utils/print-introspected-doxygen.cc	Thu Apr 17 14:33:45 2008 -0700
    28.2 +++ b/utils/print-introspected-doxygen.cc	Thu Apr 17 15:30:18 2008 -0700
    28.3 @@ -19,12 +19,12 @@
    28.4        os << "<li><b>" << tid.GetAttributeName (j) << "</b>: "
    28.5  		<< tid.GetAttributeHelp (j) << std::endl;
    28.6        Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (j);
    28.7 -      os << "  <ul>" << std::endl << "    <li>Type: \\ref " <<  checker->GetType ();
    28.8 -      if (checker->HasTypeConstraints ())
    28.9 +      os << "  <ul>" << std::endl << "    <li>Set with class: \\ref " 
   28.10 +	 <<  checker->GetValueTypeName () << "</li>" << std::endl;
   28.11 +      if (checker->HasUnderlyingTypeInformation ())
   28.12  	{
   28.13 -	  os << " -> " << checker->GetTypeConstraints ();
   28.14 +	  os << "    <li>Underlying type: \\ref " << checker->GetUnderlyingTypeInformation () << "</li>" << std::endl;
   28.15  	}
   28.16 -      os << "</li>" << std::endl;
   28.17        uint32_t flags = tid.GetAttributeFlags (j);
   28.18        Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (j);
   28.19        os << "    <li>Flags: ";