doc: align documentation and classes to match and remove warnings.
This commit is contained in:
@@ -2232,7 +2232,7 @@ SEARCH_INCLUDES = YES
|
||||
|
||||
## Allow doxygen to find generated include files, such as ns3/core-config.h
|
||||
|
||||
INCLUDE_PATH = build
|
||||
INCLUDE_PATH = build/include
|
||||
|
||||
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
|
||||
# patterns (like *.h and *.hpp) to filter out the header-files in the
|
||||
|
||||
@@ -248,10 +248,10 @@ REappend filter_blacklistRE "cairo-wideint"
|
||||
|
||||
# Functions with varying numbers of arguments
|
||||
# Explicit template instantiation declaration
|
||||
REappend filter_blacklistRE "MakeCallback< ObjectBase \\* >(ObjectBase \\*"
|
||||
# REappend filter_blacklistRE "MakeCallback< ObjectBase \\* >(ObjectBase \\*"
|
||||
|
||||
# ATTRIBUTE_HELPER_CPP( and _HEADER(
|
||||
REappend filter_blacklistRE "ATTRIBUTE_HELPER_\\(CPP\\|HEADER\\)"
|
||||
# REappend filter_blacklistRE "ATTRIBUTE_HELPER_\\(CPP\\|HEADER\\)"
|
||||
|
||||
# Filter out regular expression for black list, -e, -t and -F
|
||||
filter_outRE=""
|
||||
|
||||
@@ -225,10 +225,18 @@ class AttributeChecker : public SimpleRefCount<AttributeChecker>
|
||||
virtual bool Copy(const AttributeValue& source, AttributeValue& destination) const = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \defgroup attribute_EmptyAttribute EmptyAttribute Attribute
|
||||
* AttributeValue implementation for EmptyAttribute
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief A class for an empty attribute value.
|
||||
*
|
||||
* \ingroup attributes
|
||||
* \ingroup attribute_EmptyAttribute
|
||||
*
|
||||
* \see AttributeValue
|
||||
*/
|
||||
class EmptyAttributeValue : public AttributeValue
|
||||
{
|
||||
@@ -262,6 +270,8 @@ class EmptyAttributeValue : public AttributeValue
|
||||
/**
|
||||
* \brief An accessor for EmptyAttributeValue
|
||||
*
|
||||
* \ingroup attribute_EmptyAttribute
|
||||
*
|
||||
* Does nothing, since every EmptyAttributeValue is the same.
|
||||
*/
|
||||
class EmptyAttributeAccessor : public AttributeAccessor
|
||||
@@ -276,7 +286,7 @@ class EmptyAttributeAccessor : public AttributeAccessor
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \ingroup attribute_EmptyAttribute
|
||||
*
|
||||
* \brief Create an empty AttributeAccessor.
|
||||
*
|
||||
@@ -291,6 +301,8 @@ MakeEmptyAttributeAccessor()
|
||||
/**
|
||||
* \brief A checker for EmptyAttributeValue
|
||||
*
|
||||
* \ingroup attribute_EmptyAttribute
|
||||
*
|
||||
* Does nothing, since every EmptyAttributeValue does not contain anything and
|
||||
* is, of course, valid.
|
||||
*/
|
||||
@@ -308,7 +320,7 @@ class EmptyAttributeChecker : public AttributeChecker
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \ingroup attribute_EmptyAttribute
|
||||
*
|
||||
* \brief Create an empty AttributeChecker.
|
||||
*
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/**
|
||||
* \file
|
||||
* \ingroup attribute_Boolean
|
||||
* ns3::BooleanValue attribute value implementaation.
|
||||
* ns3::BooleanValue attribute value implementation.
|
||||
*/
|
||||
|
||||
namespace ns3
|
||||
@@ -38,7 +38,7 @@ BooleanValue::BooleanValue()
|
||||
NS_LOG_FUNCTION(this);
|
||||
}
|
||||
|
||||
BooleanValue::BooleanValue(bool value)
|
||||
BooleanValue::BooleanValue(const bool& value)
|
||||
: m_value(value)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << value);
|
||||
|
||||
@@ -37,12 +37,7 @@ class BooleanValue : public AttributeValue
|
||||
{
|
||||
public:
|
||||
BooleanValue();
|
||||
/**
|
||||
* Construct from an explicit value.
|
||||
*
|
||||
* \param [in] value The boolean value to begin with.
|
||||
*/
|
||||
BooleanValue(bool value);
|
||||
BooleanValue(const bool& value);
|
||||
void Set(bool value);
|
||||
bool Get() const;
|
||||
template <typename T>
|
||||
|
||||
@@ -38,8 +38,8 @@ CallbackValue::CallbackValue()
|
||||
NS_LOG_FUNCTION(this);
|
||||
}
|
||||
|
||||
CallbackValue::CallbackValue(const CallbackBase& base)
|
||||
: m_value(base)
|
||||
CallbackValue::CallbackValue(const CallbackBase& value)
|
||||
: m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -49,11 +49,17 @@ CallbackValue::~CallbackValue()
|
||||
}
|
||||
|
||||
void
|
||||
CallbackValue::Set(CallbackBase base)
|
||||
CallbackValue::Set(const CallbackBase& value)
|
||||
{
|
||||
NS_LOG_FUNCTION(&base);
|
||||
NS_LOG_FUNCTION(&value);
|
||||
m_value = value;
|
||||
}
|
||||
|
||||
m_value = base;
|
||||
CallbackBase
|
||||
CallbackValue::Get()
|
||||
{
|
||||
NS_LOG_FUNCTION(this);
|
||||
return m_value;
|
||||
}
|
||||
|
||||
Ptr<AttributeValue>
|
||||
|
||||
@@ -805,18 +805,12 @@ namespace ns3
|
||||
class CallbackValue : public AttributeValue
|
||||
{
|
||||
public:
|
||||
/** Constructor */
|
||||
CallbackValue();
|
||||
/**
|
||||
* Copy constructor
|
||||
* \param [in] base Callback to copy
|
||||
*/
|
||||
CallbackValue(const CallbackBase& base);
|
||||
/** Destructor */
|
||||
CallbackValue(const CallbackBase& value);
|
||||
~CallbackValue() override;
|
||||
/** \param [in] base The CallbackBase to use */
|
||||
void Set(CallbackBase base);
|
||||
/* Documented by print-introspected-doxygen.cc */
|
||||
// Documented by print-introspected-doxygen.cc
|
||||
void Set(const CallbackBase& value);
|
||||
CallbackBase Get();
|
||||
template <typename T>
|
||||
bool GetAccessor(T& value) const;
|
||||
/** \return A copy of this CallBack */
|
||||
|
||||
@@ -62,12 +62,7 @@ class EnumValue : public AttributeValue
|
||||
{
|
||||
public:
|
||||
EnumValue();
|
||||
/**
|
||||
* Construct from an explicit value.
|
||||
*
|
||||
* \param [in] value The value to begin with.
|
||||
*/
|
||||
EnumValue(T value);
|
||||
EnumValue(const T& value);
|
||||
void Set(T value);
|
||||
T Get() const;
|
||||
|
||||
@@ -85,7 +80,7 @@ template <typename T>
|
||||
EnumValue<T>::EnumValue() = default;
|
||||
|
||||
template <typename T>
|
||||
EnumValue<T>::EnumValue(T value)
|
||||
EnumValue<T>::EnumValue(const T& value)
|
||||
: m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -36,6 +36,13 @@
|
||||
namespace ns3
|
||||
{
|
||||
// Explicit instantiation declaration
|
||||
|
||||
/**
|
||||
* \ingroup callback
|
||||
* Explicit instantiation for ObjectBase
|
||||
* \return A wrapper Callback
|
||||
* \sa ns3::MakeCallback
|
||||
*/
|
||||
template Callback<ObjectBase*> MakeCallback<ObjectBase*>(ObjectBase* (*)());
|
||||
template Callback<ObjectBase*>::Callback();
|
||||
template class CallbackImpl<ObjectBase*>;
|
||||
|
||||
@@ -47,10 +47,19 @@ operator<<(std::ostream& os, const std::pair<A, B>& p)
|
||||
return os;
|
||||
}
|
||||
|
||||
// Doxygen for this class is auto-generated by
|
||||
// utils/print-introspected-doxygen.h
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \defgroup attribute_Pair Pair Attribute
|
||||
* AttributeValue implementation for Pair
|
||||
*/
|
||||
|
||||
/** Hold objects of type std::pair<A, B>. */
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
* AttributeValue implementation for Pair.
|
||||
* Hold objects of type std::pair<A, B>.
|
||||
*
|
||||
* \see AttributeValue
|
||||
*/
|
||||
template <class A, class B>
|
||||
class PairValue : public AttributeValue
|
||||
{
|
||||
@@ -64,14 +73,18 @@ class PairValue : public AttributeValue
|
||||
/** Type returned by Get or passed in Set. */
|
||||
typedef typename std::pair<first_type, second_type> result_type;
|
||||
|
||||
PairValue();
|
||||
PairValue()
|
||||
: m_value(std::make_pair(Create<A>(), Create<B>())){};
|
||||
|
||||
/**
|
||||
* Construct this PairValue from a std::pair
|
||||
*
|
||||
* \param [in] value Value with which to construct.
|
||||
*/
|
||||
PairValue(const result_type& value); // "import" constructor
|
||||
PairValue(const result_type& value)
|
||||
{
|
||||
Set(value);
|
||||
}; // "import" constructor
|
||||
|
||||
// Inherited
|
||||
Ptr<AttributeValue> Copy() const override;
|
||||
@@ -86,16 +99,30 @@ class PairValue : public AttributeValue
|
||||
* \return stored value as std::pair<A, B>.
|
||||
*/
|
||||
result_type Get() const;
|
||||
/* Documented by print-introspected-doxygen.cc */
|
||||
/**
|
||||
* Set the value.
|
||||
* \param [in] value The value to adopt.
|
||||
*/
|
||||
void Set(const result_type& value);
|
||||
|
||||
/**
|
||||
* Access the Pair value as type \p T.
|
||||
* \tparam T \explicit The type to cast to.
|
||||
* \param [out] value The Pair value, as type \p T.
|
||||
* \returns true.
|
||||
*/
|
||||
template <typename T>
|
||||
bool GetAccessor(T& value) const;
|
||||
|
||||
private:
|
||||
value_type m_value;
|
||||
value_type m_value; //!< The stored Pair instance.
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
* AttributeChecker implementation for PairValue.
|
||||
* \see AttributeChecker
|
||||
*/
|
||||
class PairChecker : public AttributeChecker
|
||||
{
|
||||
public:
|
||||
@@ -120,6 +147,8 @@ class PairChecker : public AttributeChecker
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
*
|
||||
* Make a PairChecker from a PairValue.
|
||||
*
|
||||
* This function returns a Pointer to a non-const instance to
|
||||
@@ -131,6 +160,8 @@ template <class A, class B>
|
||||
Ptr<AttributeChecker> MakePairChecker(const PairValue<A, B>& value);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
*
|
||||
* Make a PairChecker from abscissa and ordinate AttributeCheckers.
|
||||
*
|
||||
* This function returns a Pointer to a const instance since both
|
||||
@@ -145,6 +176,8 @@ Ptr<const AttributeChecker> MakePairChecker(Ptr<const AttributeChecker> firstche
|
||||
Ptr<const AttributeChecker> secondchecker);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
*
|
||||
* Make a PairChecker without abscissa and ordinate AttributeCheckers.
|
||||
*
|
||||
* \return Pointer to PairChecker instance.
|
||||
@@ -152,6 +185,16 @@ Ptr<const AttributeChecker> MakePairChecker(Ptr<const AttributeChecker> firstche
|
||||
template <class A, class B>
|
||||
Ptr<AttributeChecker> MakePairChecker();
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
*
|
||||
* Create an AttributeAccessor for std::pair<>.
|
||||
* \tparam A \explicit The type of pair.first.
|
||||
* \tparam B \explicit The type of pair.second.
|
||||
* \tparam T1 \deduced The argument pair type.
|
||||
* \param [in] a1 The std::pair to be accessed.
|
||||
* \returns The AttributeAccessor.
|
||||
*/
|
||||
template <typename A, typename B, typename T1>
|
||||
Ptr<const AttributeAccessor> MakePairAccessor(T1 a1);
|
||||
|
||||
@@ -171,6 +214,8 @@ namespace internal
|
||||
{
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pair
|
||||
*
|
||||
* Internal checker class templated to each AttributeChecker
|
||||
* for each entry in the pair.
|
||||
*/
|
||||
@@ -272,18 +317,6 @@ MakePairChecker()
|
||||
return MakeSimpleAttributeChecker<T, internal::PairChecker<A, B>>(pairName, underlyingType);
|
||||
}
|
||||
|
||||
template <class A, class B>
|
||||
PairValue<A, B>::PairValue()
|
||||
: m_value(std::make_pair(Create<A>(), Create<B>()))
|
||||
{
|
||||
}
|
||||
|
||||
template <class A, class B>
|
||||
PairValue<A, B>::PairValue(const typename PairValue<A, B>::result_type& value)
|
||||
{
|
||||
Set(value);
|
||||
}
|
||||
|
||||
template <class A, class B>
|
||||
Ptr<AttributeValue>
|
||||
PairValue<A, B>::Copy() const
|
||||
@@ -374,14 +407,6 @@ PairValue<A, B>::GetAccessor(T& value) const
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an AttributeAccessor for std::pair<>.
|
||||
* \tparam A \explicit The type of pair.first.
|
||||
* \tparam B \explicit The type of pair.second.
|
||||
* \tparam T1 \deduced The argument pair type.
|
||||
* \param [in] a1 The std::pair to be accessed.
|
||||
* \returns The AttributeAccessor.
|
||||
*/
|
||||
template <typename A, typename B, typename T1>
|
||||
Ptr<const AttributeAccessor>
|
||||
MakePairAccessor(T1 a1)
|
||||
|
||||
@@ -40,7 +40,7 @@ PointerValue::PointerValue()
|
||||
NS_LOG_FUNCTION(this);
|
||||
}
|
||||
|
||||
PointerValue::PointerValue(Ptr<Object> object)
|
||||
PointerValue::PointerValue(const Ptr<Object>& object)
|
||||
: m_value(object)
|
||||
{
|
||||
NS_LOG_FUNCTION(object);
|
||||
|
||||
@@ -31,8 +31,19 @@
|
||||
namespace ns3
|
||||
{
|
||||
|
||||
// Additional docs for class PointerValue:
|
||||
/** Hold objects of type Ptr<T>. */
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \defgroup attribute_Pointer Pointer Attribute
|
||||
* AttributeValue implementation for Pointer.
|
||||
* Hold objects of type Ptr<T>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* \class ns3::PointerValue "pointer.h"
|
||||
* AttributeValue implementation for Pointer. Hold objects of type Ptr<T>.
|
||||
* \see AttributeValue
|
||||
*/
|
||||
class PointerValue : public AttributeValue
|
||||
{
|
||||
public:
|
||||
@@ -43,7 +54,7 @@ class PointerValue : public AttributeValue
|
||||
*
|
||||
* \param [in] object The object to begin with.
|
||||
*/
|
||||
PointerValue(Ptr<Object> object);
|
||||
PointerValue(const Ptr<Object>& object);
|
||||
|
||||
/**
|
||||
* Set the value from by reference an Object.
|
||||
@@ -74,14 +85,26 @@ class PointerValue : public AttributeValue
|
||||
template <typename T>
|
||||
operator Ptr<T>() const;
|
||||
|
||||
// Documentation generated by print-introspected-doxygen.cc
|
||||
/**
|
||||
* Set the value.
|
||||
* \param [in] value The value to adopt.
|
||||
*/
|
||||
template <typename T>
|
||||
void Set(const Ptr<T>& value);
|
||||
|
||||
/** \tparam T \explicit The type to cast to. */
|
||||
/**
|
||||
* \returns The Pointer value.
|
||||
* \tparam T \explicit The type to cast to.
|
||||
*/
|
||||
template <typename T>
|
||||
Ptr<T> Get() const;
|
||||
|
||||
/**
|
||||
* Access the Pointer value as type \p T.
|
||||
* \tparam T \explicit The type to cast to.
|
||||
* \param [out] value The Pointer value, as type \p T.
|
||||
* \returns true.
|
||||
*/
|
||||
template <typename T>
|
||||
bool GetAccessor(Ptr<T>& value) const;
|
||||
|
||||
@@ -90,9 +113,14 @@ class PointerValue : public AttributeValue
|
||||
bool DeserializeFromString(std::string value, Ptr<const AttributeChecker> checker) override;
|
||||
|
||||
private:
|
||||
Ptr<Object> m_value;
|
||||
Ptr<Object> m_value; //!< The stored Pointer instance.
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* AttributeChecker implementation for PointerValue.
|
||||
* \see AttributeChecker
|
||||
*/
|
||||
class PointerChecker : public AttributeChecker
|
||||
{
|
||||
public:
|
||||
@@ -104,6 +132,7 @@ class PointerChecker : public AttributeChecker
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* Create a PointerChecker for a type.
|
||||
* \tparam T \explicit The underlying type.
|
||||
* \returns The PointerChecker.
|
||||
@@ -123,7 +152,10 @@ namespace ns3
|
||||
namespace internal
|
||||
{
|
||||
|
||||
/** PointerChecker implementation. */
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* PointerChecker implementation.
|
||||
*/
|
||||
template <typename T>
|
||||
class PointerChecker : public ns3::PointerChecker
|
||||
{
|
||||
@@ -226,6 +258,23 @@ PointerValue::GetAccessor(Ptr<T>& v) const
|
||||
|
||||
ATTRIBUTE_ACCESSOR_DEFINE(Pointer);
|
||||
|
||||
// Documentation of the functions defined by the macro.
|
||||
// not documented by print-introspected-doxygen because
|
||||
// Pointer has custom functions.
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* \fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakePointerAccessor (T1 a1)
|
||||
* \copydoc ns3::MakeAccessorHelper(T1)
|
||||
* \see AttributeAccessor
|
||||
*/
|
||||
/**
|
||||
* \ingroup attribute_Pointer
|
||||
* \fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakePointerAccessor (T1 a1, T2 a2)
|
||||
* \copydoc ns3::MakeAccessorHelper(T1,T2)
|
||||
* \see AttributeAccessor
|
||||
*/
|
||||
|
||||
template <typename T>
|
||||
Ptr<AttributeChecker>
|
||||
MakePointerChecker()
|
||||
|
||||
@@ -57,12 +57,21 @@ operator<<(std::ostream& os, const std::tuple<Args...>& t)
|
||||
return os;
|
||||
}
|
||||
|
||||
// Doxygen for this class is auto-generated by
|
||||
// utils/print-introspected-doxygen.h
|
||||
/**
|
||||
* \ingroup attributes
|
||||
* \defgroup attribute_Tuple Tuple Attribute
|
||||
* AttributeValue implementation for Tuple
|
||||
*/
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* AttributeValue implementation for Tuple.
|
||||
*
|
||||
* Hold objects of type std::tuple<Args...>.
|
||||
* \tparam Args \explicit The list of AttributeValues to be held by this TupleValue
|
||||
*
|
||||
* \see AttributeValue
|
||||
*/
|
||||
template <class... Args>
|
||||
class TupleValue : public AttributeValue
|
||||
@@ -96,6 +105,8 @@ class TupleValue : public AttributeValue
|
||||
result_type Get() const;
|
||||
/**
|
||||
* Set the stored values.
|
||||
*
|
||||
* \param value The stored value
|
||||
*/
|
||||
void Set(const result_type& value);
|
||||
|
||||
@@ -110,6 +121,7 @@ class TupleValue : public AttributeValue
|
||||
*
|
||||
* \tparam T \deduced the type of the given variable (normally, the argument type
|
||||
* of a set method or the type of a data member)
|
||||
* \param [out] value The stored value
|
||||
* \return true if the given variable was set
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -131,6 +143,8 @@ class TupleValue : public AttributeValue
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Create a TupleValue object. Enable to write code like this snippet:
|
||||
*
|
||||
* \code
|
||||
@@ -149,6 +163,8 @@ template <class T1, class T2>
|
||||
auto MakeTupleValue(T2 t);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Checker for attribute values storing tuples.
|
||||
*/
|
||||
class TupleChecker : public AttributeChecker
|
||||
@@ -163,6 +179,8 @@ class TupleChecker : public AttributeChecker
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Create a TupleChecker from AttributeCheckers associated with TupleValue elements.
|
||||
*
|
||||
* \tparam Args \explicit Attribute value types
|
||||
@@ -174,6 +192,8 @@ template <class... Args, class... Ts>
|
||||
Ptr<const AttributeChecker> MakeTupleChecker(Ts... checkers);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Create an AttributeAccessor for a class data member of type tuple,
|
||||
* or a lone class get functor or set method.
|
||||
*
|
||||
@@ -188,6 +208,8 @@ template <class... Args, class T1>
|
||||
Ptr<const AttributeAccessor> MakeTupleAccessor(T1 a1);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Create an AttributeAccessor using a pair of get functor
|
||||
* and set methods from a class.
|
||||
*
|
||||
@@ -343,6 +365,8 @@ namespace internal
|
||||
{
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Internal checker class templated to each AttributeChecker
|
||||
* for each entry in the tuple.
|
||||
*/
|
||||
@@ -418,6 +442,8 @@ class TupleChecker : public ns3::TupleChecker
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Helper class defining static methods for MakeTupleChecker and MakeTupleAccessor
|
||||
* that are called when user specifies the list of AttributeValue types included
|
||||
* in a TupleValue type.
|
||||
@@ -454,6 +480,8 @@ struct TupleHelper
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Tuple
|
||||
*
|
||||
* Helper class defining static methods for MakeTupleValue, MakeTupleChecker and
|
||||
* MakeTupleAccessor that are called when user provides a std::tuple of the
|
||||
* AttributeValue types included in a TupleValue type.
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \ingroup attribute_Vector
|
||||
* \ingroup geometry
|
||||
* ns3::Vector, ns3::Vector2D and ns3::Vector3D attribute value implementations.
|
||||
*/
|
||||
|
||||
|
||||
@@ -318,47 +318,53 @@ ATTRIBUTE_HELPER_HEADER(Vector3D);
|
||||
ATTRIBUTE_HELPER_HEADER(Vector2D);
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Vector3D
|
||||
* \relates Vector3D
|
||||
* Vector alias typedef for compatibility with mobility models
|
||||
*/
|
||||
typedef Vector3D Vector;
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Vector3D
|
||||
* \relates Vector3D
|
||||
* Vector alias typedef for compatibility with mobility models
|
||||
*/
|
||||
typedef Vector3DValue VectorValue;
|
||||
|
||||
/**
|
||||
* \ingroup attribute_Vector3D
|
||||
* \relates Vector3D
|
||||
* Vector alias typedef for compatibility with mobility models
|
||||
*/
|
||||
typedef Vector3DChecker VectorChecker;
|
||||
|
||||
// Document these by hand so they go in group attribute_Vector3D
|
||||
/**
|
||||
* \relates Vector3D
|
||||
* \fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakeVectorAccessor (T1 a1)
|
||||
* \copydoc ns3::MakeAccessorHelper(T1)
|
||||
* \see AttributeAccessor
|
||||
*/
|
||||
|
||||
/**
|
||||
* \relates Vector3D
|
||||
* \fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakeVectorAccessor (T1 a1, T2 a2)
|
||||
* \copydoc ns3::MakeAccessorHelper(T1,T2)
|
||||
* \see AttributeAccessor
|
||||
*/
|
||||
|
||||
ATTRIBUTE_ACCESSOR_DEFINE(Vector);
|
||||
|
||||
/**
|
||||
* \relates Vector3D
|
||||
* \returns The AttributeChecker.
|
||||
* \see AttributeChecker
|
||||
*/
|
||||
Ptr<const AttributeChecker> MakeVectorChecker();
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
// Document these by hand so they go in group attribute_Vector3D
|
||||
|
||||
/*!
|
||||
\ingroup attribute_Vector3D
|
||||
\fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakeVectorAccessor (T1 a1)
|
||||
\copydoc ns3::MakeAccessorHelper(T1)
|
||||
\see AttributeAccessor
|
||||
*/
|
||||
|
||||
/*!
|
||||
\ingroup attribute_Vector3D
|
||||
\fn ns3::Ptr<const ns3::AttributeAccessor> ns3::MakeVectorAccessor (T1 a1, T2 a2)
|
||||
\copydoc ns3::MakeAccessorHelper(T1,T2)
|
||||
\see AttributeAccessor
|
||||
*/
|
||||
|
||||
/*!
|
||||
\ingroup attribute_Vector3D
|
||||
\fn ns3::Ptr<const ns3::AttributeChecker> ns3::MakeVectorChecker ()
|
||||
\returns The AttributeChecker.
|
||||
\see AttributeChecker
|
||||
*/
|
||||
|
||||
#endif /* NS3_VECTOR_H */
|
||||
|
||||
@@ -41,7 +41,10 @@ namespace ns3
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE("FdReader");
|
||||
|
||||
// conditional compilation to avoid Doxygen errors
|
||||
#ifdef __WIN32__
|
||||
bool FdReader::winsock_initialized = false;
|
||||
#endif
|
||||
|
||||
FdReader::FdReader()
|
||||
: m_fd(-1),
|
||||
|
||||
@@ -32,7 +32,6 @@ namespace dot11s
|
||||
|
||||
/**
|
||||
* \brief a IEEE 802.11 Mesh ID element (Section 8.4.2.101 of IEEE 802.11-2012)
|
||||
* \see attribute_IeMeshId
|
||||
*/
|
||||
class IeMeshId : public WifiInformationElement
|
||||
{
|
||||
|
||||
@@ -325,9 +325,9 @@ class MgtHeaderInPerStaProfile<Derived, std::tuple<Elems...>>
|
||||
to the Per-STA Profile subelement */
|
||||
};
|
||||
|
||||
/**
|
||||
* Implementation of the templates declared above.
|
||||
*/
|
||||
//
|
||||
// Implementation of the templates declared above.
|
||||
//
|
||||
|
||||
template <typename Derived, typename... Elems>
|
||||
template <typename T, std::enable_if_t<(std::is_same_v<std::vector<T>, Elems> + ...) == 0, int>>
|
||||
|
||||
@@ -1227,15 +1227,7 @@ PrintAttributeValueSection(std::ostream& os, const std::string& name, const bool
|
||||
<< "AttributeValue implementation for " << name << "\n";
|
||||
if (seeBase)
|
||||
{
|
||||
// Some classes don't live in ns3::. Yuck
|
||||
if (name != "IeMeshId")
|
||||
{
|
||||
os << seeAlso << "ns3::" << name << "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
os << seeAlso << "ns3::dot11s::" << name << "\n";
|
||||
}
|
||||
os << seeAlso << "ns3::" << name << "\n";
|
||||
}
|
||||
os << commentStop;
|
||||
|
||||
@@ -1271,20 +1263,12 @@ PrintAttributeValueWithName(std::ostream& os,
|
||||
os << seeAlso << "AttributeValue" << std::endl;
|
||||
os << commentStop;
|
||||
|
||||
// Copy ctor: <name>Value::<name>Value
|
||||
os << commentStart << functionStart << name << qualClass << "::" << valClass;
|
||||
if ((name == "EmptyAttribute") || (name == "ObjectPtrContainer"))
|
||||
{
|
||||
// Just default constructors.
|
||||
os << "()\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Copy constructors
|
||||
os << "(const " << type << " & value)\n"
|
||||
<< "Copy constructor.\n"
|
||||
<< argument << "[in] value The " << name << " value to copy.\n";
|
||||
}
|
||||
// Ctor: <name>Value::<name>Value
|
||||
os << commentStart << functionStart << qualClass << "::" << valClass;
|
||||
// Constructors
|
||||
os << "(const " << type << " & value)\n"
|
||||
<< "Constructor.\n"
|
||||
<< argument << "[in] value The " << name << " value to use.\n";
|
||||
os << commentStop;
|
||||
|
||||
// <name>Value::Get () const
|
||||
@@ -1430,7 +1414,6 @@ PrintAttributeImplementations(std::ostream& os)
|
||||
{ "Box", "Box", true, "box.h" },
|
||||
{ "DataRate", "DataRate", true, "data-rate.h" },
|
||||
{ "Length", "Length", true, "length.h" },
|
||||
{ "IeMeshId", "IeMeshId", true, "ie-dot11s-id.h" },
|
||||
{ "Ipv4Address", "Ipv4Address", true, "ipv4-address.h" },
|
||||
{ "Ipv4Mask", "Ipv4Mask", true, "ipv4-address.h" },
|
||||
{ "Ipv6Address", "Ipv6Address", true, "ipv6-address.h" },
|
||||
@@ -1446,7 +1429,6 @@ PrintAttributeImplementations(std::ostream& os)
|
||||
{ "TypeId", "TypeId", true, "type-id.h" },
|
||||
{ "UanModesList", "UanModesList", true, "uan-tx-mode.h" },
|
||||
{ "ValueClassTest", "ValueClassTest", false, "attribute-test-suite.cc" /* core/test/ */ },
|
||||
{ "Vector", "Vector", true, "vector.h" },
|
||||
{ "Vector2D", "Vector2D", true, "vector.h" },
|
||||
{ "Vector3D", "Vector3D", true, "vector.h" },
|
||||
{ "Waypoint", "Waypoint", true, "waypoint.h" },
|
||||
@@ -1454,11 +1436,10 @@ PrintAttributeImplementations(std::ostream& os)
|
||||
|
||||
// All three (Value, Access and Checkers) defined, but custom
|
||||
{ "Boolean", "bool", false, "boolean.h" },
|
||||
{ "Callback", "Callback", true, "callback.h" },
|
||||
{ "Callback", "CallbackBase", true, "callback.h" },
|
||||
{ "Double", "double", false, "double.h" },
|
||||
{ "Enum", "int", false, "enum.h" },
|
||||
{ "Enum", "T", false, "enum.h" },
|
||||
{ "Integer", "int64_t", false, "integer.h" },
|
||||
{ "Pointer", "Pointer", false, "pointer.h" },
|
||||
{ "String", "std::string", false, "string.h" },
|
||||
{ "Time", "Time", true, "nstime.h" },
|
||||
{ "Uinteger", "uint64_t", false, "uinteger.h" },
|
||||
@@ -1473,18 +1454,6 @@ PrintAttributeImplementations(std::ostream& os)
|
||||
++i;
|
||||
}
|
||||
|
||||
// Special cases
|
||||
PrintAttributeValueSection(os, "EmptyAttribute", false);
|
||||
PrintAttributeValueWithName(os, "EmptyAttribute", "EmptyAttribute", "attribute.h");
|
||||
|
||||
// ObjectPtrContainer is already documented.
|
||||
// PrintAttributeValueSection(os, "ObjectPtrContainer", false);
|
||||
// PrintAttributeValueWithName(os,
|
||||
// "ObjectPtrContainer",
|
||||
// "ObjectPtrContainer",
|
||||
// "object-ptr-container.h");
|
||||
// PrintMakeChecker(os, "ObjectPtrContainer", "object-ptr-container.h");
|
||||
|
||||
PrintAttributeValueSection(os, "ObjectVector", false);
|
||||
PrintMakeAccessors(os, "ObjectVector");
|
||||
PrintMakeChecker(os, "ObjectVector", "object-vector.h");
|
||||
@@ -1493,19 +1462,6 @@ PrintAttributeImplementations(std::ostream& os)
|
||||
PrintMakeAccessors(os, "ObjectMap");
|
||||
PrintMakeChecker(os, "ObjectMap", "object-map.h");
|
||||
|
||||
PrintAttributeValueSection(os, "Pair", false);
|
||||
PrintAttributeValueWithName(os, "Pair", "std::pair<A, B>", "pair.h");
|
||||
PrintMakeChecker(os, "Pair", "pair.h");
|
||||
|
||||
PrintAttributeValueSection(os, "Tuple", false);
|
||||
PrintAttributeValueWithName(os, "Tuple", "std::tuple<Args...>", "tuple.h");
|
||||
PrintMakeChecker(os, "Tuple", "tuple.h");
|
||||
|
||||
// AttributeContainer is already documented.
|
||||
// PrintAttributeValueSection (os, "AttributeContainer", false);
|
||||
// PrintAttributeValueWithName (os, "AttributeContainer", "AttributeContainer",
|
||||
// "attribute-container.h");
|
||||
// PrintMakeChecker(os, "AttributeContainer", "attribute-container.h");
|
||||
} // PrintAttributeImplementations ()
|
||||
|
||||
/***************************************************************
|
||||
|
||||
Reference in New Issue
Block a user