Attribute Helper
[Core]
Detailed Description
All these macros can be used to generate automatically the code for subclasses of AttributeValue, AttributeAccessor, and, AttributeChecker, which can be used to give attribute powers to a normal class. i.e., the user class can then effectively be made an attribute.
There are two kinds of helper macros: 1) The simple macros. 2) The more complex macros.
The simple macros are implemented in terms of the complex macros and should generally be prefered over the complex macros:
Define Documentation
#define ATTRIBUTE_ACCESSOR_DEFINE |
( |
type |
|
) |
|
Value:
template <typename T1> \
Ptr<const AttributeAccessor> Make##type##Accessor (T1 a1) \
{ \
return MakeAccessorHelper<type##Value> (a1); \
} \
template <typename T1, typename T2> \
Ptr<const AttributeAccessor> Make##type##Accessor (T1 a1, T2 a2) \
{ \
return MakeAccessorHelper<type##Value> (a1, a2); \
}
- Parameters:
-
| type | the name of the class |
This macro defines and generates the code for the implementation of the MakeXXXAccessor template functions. This macro is typically invoked in a class header to allow users of this class to view and use the template functions defined here. This macro is implemented through the helper templates functions ns3::MakeAccessorHelper<>.
#define ATTRIBUTE_CHECKER_DEFINE |
( |
type |
|
) |
|
Value:
class type##Checker : public AttributeChecker {}; \
Ptr<const AttributeChecker> Make##type##Checker (void); \
- Parameters:
-
| type | the name of the class |
This macro defines the XXXChecker class and the associated MakeXXXChecker function. Typically invoked from xxx.h.
#define ATTRIBUTE_CHECKER_IMPLEMENT |
( |
type |
|
) |
|
Value:
Ptr<const AttributeChecker> Make##type##Checker (void) \
{ \
return MakeSimpleAttributeChecker<type##Value,type##Checker> (#type "Value", #type); \
} \
- Parameters:
-
| type | the name of the class |
This macro implements the MakeXXXChecker function. Typically invoked from xxx.cc.
#define ATTRIBUTE_CONVERTER_DEFINE |
( |
type |
|
) |
|
- Parameters:
-
| type | the name of the class |
This macro defines the conversion operators for class XXX to and from instances of type Attribute. Typically invoked from xxx.h.
#define ATTRIBUTE_HELPER_CPP |
( |
type |
|
) |
|
Value:
- Parameters:
-
| type | the name of the class |
This macro should be invoked from the class implementation file.
#define ATTRIBUTE_HELPER_HEADER |
( |
type |
|
) |
|
Value:
- Parameters:
-
| type | the name of the class |
This macro should be invoked outside of the class declaration in its public header.
#define ATTRIBUTE_VALUE_DEFINE |
( |
type |
|
) |
ATTRIBUTE_VALUE_DEFINE_WITH_NAME (type,type) |
- Parameters:
-
| type | the name of the class. |
This macro defines the class XXXValue associated to class XXX. This macro is typically invoked in a class header.
#define ATTRIBUTE_VALUE_IMPLEMENT |
( |
type |
|
) |
ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME(type,type) |
- Parameters:
-
| type | the name of the class. |
This macro implements the XXXValue class (including the XXXValue::SerializeToString and XXXValue::DeserializeFromString methods). Typically invoked from xxx.cc.