96    value = 
static_cast<T
>(m_value);
 
 
  124    void Add(T value, std::string name);
 
  131    std::string 
GetName(T value) 
const;
 
  138    T 
GetValue(
const std::string name) 
const;
 
  150    using Value = std::pair<T, std::string>;
 
 
  177template <
typename T, 
typename... Ts>
 
  182    checker->AddDefault(v, n);
 
 
  197template <
typename T, 
typename... Ts>
 
  198Ptr<const AttributeChecker>
 
  213inline Ptr<const AttributeChecker>
 
  219template <
typename T, 
typename T1>
 
  220Ptr<const AttributeAccessor>
 
  226template <
typename T, 
typename T1, 
typename T2>
 
  227Ptr<const AttributeAccessor>
 
  239    std::string name = p->GetName(m_value);
 
 
  249    m_value = p->GetValue(value);
 
 
  262    m_valueSet.emplace_front(value, name);
 
 
  269    m_valueSet.emplace_back(value, name);
 
 
  276    auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [value](
Value v) {
 
  277        return v.first == value;
 
  281                  "invalid enum value " << 
static_cast<int>(value)
 
  282                                        << 
"! Missed entry in MakeEnumChecker?");
 
 
  290    auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [name](
Value v) {
 
  291        return v.second == name;
 
  294        it != m_valueSet.end(),
 
  297            << 
" is not a valid enum value. Missed entry in MakeEnumChecker?\nAvailable values: " 
  298            << std::accumulate(m_valueSet.begin(),
 
  301                               [](std::string a, 
Value v) {
 
  308                                       return std::move(a) + 
", " + v.second;
 
 
  318    const auto p = 
dynamic_cast<const EnumValue<T>*
>(&value);
 
  323    auto pvalue = p->
Get();
 
  324    auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [pvalue](
Value v) {
 
  325        return v.first == pvalue;
 
  327    return (it != m_valueSet.end());
 
 
  334    return "ns3::EnumValue<" + 
Demangle(
typeid(T).name()) + 
">";
 
 
  348    std::ostringstream oss;
 
  349    bool moreValues = 
false;
 
  350    for (
const auto& i : m_valueSet)
 
  352        oss << (moreValues ? 
"|" : 
"") << i.second;
 
 
  369    const auto src = 
dynamic_cast<const EnumValue<T>*
>(&source);
 
 
ns3::MakeAccessorHelper declarations and template implementations.
ns3::AttributeValue, ns3::AttributeAccessor and ns3::AttributeChecker declarations.
Represent the type of an attribute.
Hold a value for an Attribute.
AttributeChecker implementation for EnumValue.
Ptr< AttributeValue > Create() const override
void Add(T value, std::string name)
Add a new value.
bool HasUnderlyingTypeInformation() const override
std::list< Value > ValueSet
Type of container for storing Enum values and symbol names.
std::string GetName(T value) const
Get the enum symbol name by value.
bool Copy(const AttributeValue &src, AttributeValue &dst) const override
Copy the source to the destination.
void AddDefault(T value, std::string name)
Add a default value.
std::string GetValueTypeName() const override
T GetValue(const std::string name) const
Get the enum value by name.
bool Check(const AttributeValue &value) const override
std::pair< T, std::string > Value
Type for the pair value, name.
ValueSet m_valueSet
The stored Enum values and symbol names.
std::string GetUnderlyingTypeInformation() const override
Hold variables of type enum.
void Set(T value)
Set the value.
bool DeserializeFromString(std::string value, Ptr< const AttributeChecker > checker) override
T m_value
The stored value.
bool GetAccessor(T &value) const
Access the Enum value as type T.
std::string SerializeToString(Ptr< const AttributeChecker > checker) const override
Ptr< AttributeValue > Copy() const override
Smart pointer class similar to boost::intrusive_ptr.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< const AttributeAccessor > MakeAccessorHelper(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
U * PeekPointer(const Ptr< U > &p)
std::string Demangle(const std::string &mangled)
Ptr< const AttributeChecker > MakeEnumChecker(T v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.