16#ifndef __OMNETPP_CENUM_H
17#define __OMNETPP_CENUM_H
19#include <initializer_list>
20#include "cownedobject.h"
33class SIM_API
cEnum :
public cOwnedObject
36 std::map<intval_t,std::string> valueToNameMap;
37 std::map<std::string,intval_t> nameToValueMap;
38 std::vector<std::string> tmpNames;
41 void copy(
const cEnum& other);
45 cEnum *registerNames(
const char *nameList);
48 cEnum *registerValues(
const std::initializer_list<T>& values) {
50 for (T value : values)
57 void addPairs(
const std::initializer_list<std::pair<const char*,T>> pairList) {
58 for (
const auto& pair : pairList)
64 [[deprecated(
"Use Register_Enum_Custom() macro instead of Register_Enum2()")]]
65 void bulkInsert(
const char *name1, ...);
73 explicit cEnum(
const char *name=
nullptr);
104 virtual std::string
str()
const override;
145 return static_cast<E
>(e->
resolve(name));
169 const std::map<std::string,intval_t>&
getNameValueMap()
const {
return nameToValueMap;}
179 static cEnum *
find(
const char *enumName,
const char *contextNamespace=
nullptr);
184 static cEnum *
get(
const char *enumName,
const char *contextNamespace=
nullptr);
static E resolveName(const char *name)
Definition cenum.h:143
static cEnum * find(const char *enumName, const char *contextNamespace=nullptr)
cEnum(const cEnum &cenum)
const char * getStringFor(intval_t value)
static cEnum * get(const char *enumName, const char *contextNamespace=nullptr)
cEnum(const char *name=nullptr)
virtual ~cEnum()
Definition cenum.h:83
void insert(intval_t value, const char *name)
intval_t resolve(const char *name)
const std::map< std::string, intval_t > & getNameValueMap() const
Definition cenum.h:169
virtual std::string str() const override
cEnum & operator=(const cEnum &list)
static const char * getNameForValue(E value)
Definition cenum.h:161
intval_t lookup(const char *name, intval_t fallback=-1)
virtual cEnum * dup() const override
Definition cenum.h:99
int64_t intval_t
Signed integer type which is guaranteed to be at least 64 bits wide. It is used throughout the librar...
Definition simkerneldefs.h:101
SIM_API const char * opp_typename(const std::type_info &t)
Returns the name of a C++ type, correcting the quirks of various compilers.