ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::tools::enum2name< ENUMT > Class Template Reference

双向枚举-名称注册表。 More...

#include <tools_enum.h>

Static Public Member Functions

static bool empty ()
 检查注册表是否为空。
static void set (ENUMT aenum, const char *aname, int anum=0)
 注册枚举值及其名称。
static ENUMT enum_null ()
 获取空枚举值(无效值)。
static ENUMT get_enum (const char *aname, int anum=0)
 根据名称获取枚举值(不区分大小写)。
static const data * get_data (const ENUMT aenum, int anum=0)
 获取枚举值对应的名称数据。
static const char * name (const ENUMT aenum, int anum=0)
 获取枚举值的原始名称。
static const char * tolower_name (const ENUMT aenum, int anum=0)
 获取枚举值的小写名称。
static const char * toupper_name (const ENUMT aenum, int anum=0)
 获取枚举值的大写名称。
static void print ()
 打印所有已注册的枚举值和名称。

Detailed Description

template<typename ENUMT>
class ngl::tools::enum2name< ENUMT >

双向枚举-名称注册表。

提供枚举值与字符串之间的双向映射,支持原始、小写、大写三种形式的查找。 通过模板参数区分不同的枚举类型,支持多分组(anum参数)。

Template Parameters
ENUMT枚举类型
Note
禁止实例化,所有方法均为静态方法。
使用em_pram(NAME)宏可简化枚举注册。
// 注册枚举值
enum2name<MyEnum>::set(MyEnum::Value1, "Value1");
// 正向查找:枚举 → 字符串
const char* name = enum2name<MyEnum>::name(MyEnum::Value1);
// 反向查找:字符串 → 枚举
MyEnum e = enum2name<MyEnum>::get_enum("value1"); // 不区分大小写

Member Function Documentation

◆ empty()

template<typename ENUMT>
bool ngl::tools::enum2name< ENUMT >::empty ( )
inlinestatic

检查注册表是否为空。

Returns
true 无已注册枚举
false 有已注册枚举

◆ enum_null()

template<typename ENUMT>
ENUMT ngl::tools::enum2name< ENUMT >::enum_null ( )
inlinestatic

获取空枚举值(无效值)。

Returns
ENUMT 空枚举值(-1转换)

◆ get_data()

template<typename ENUMT>
const data * ngl::tools::enum2name< ENUMT >::get_data ( const ENUMT aenum,
int anum = 0 )
inlinestatic

获取枚举值对应的名称数据。

Parameters
aenum枚举值
anum分组号,默认为0
Returns
const data* 名称数据指针,未找到返回nullptr

◆ get_enum()

template<typename ENUMT>
ENUMT ngl::tools::enum2name< ENUMT >::get_enum ( const char * aname,
int anum = 0 )
inlinestatic

根据名称获取枚举值(不区分大小写)。

Parameters
aname枚举名称字符串
anum分组号,默认为0
Returns
ENUMT 对应的枚举值,未找到返回enum_null()

◆ name()

template<typename ENUMT>
const char * ngl::tools::enum2name< ENUMT >::name ( const ENUMT aenum,
int anum = 0 )
inlinestatic

获取枚举值的原始名称。

Parameters
aenum枚举值
anum分组号,默认为0
Returns
const char* 原始名称字符串,未找到返回nullptr

◆ print()

template<typename ENUMT>
void ngl::tools::enum2name< ENUMT >::print ( )
inlinestatic

打印所有已注册的枚举值和名称。

调试用,输出格式为 "枚举值:名称"。

◆ set()

template<typename ENUMT>
void ngl::tools::enum2name< ENUMT >::set ( ENUMT aenum,
const char * aname,
int anum = 0 )
inlinestatic

注册枚举值及其名称。

Parameters
aenum枚举值
aname枚举名称字符串
anum分组号,默认为0
Note
同时注册原始、小写、大写三种形式。

◆ tolower_name()

template<typename ENUMT>
const char * ngl::tools::enum2name< ENUMT >::tolower_name ( const ENUMT aenum,
int anum = 0 )
inlinestatic

获取枚举值的小写名称。

Parameters
aenum枚举值
anum分组号,默认为0
Returns
const char* 小写名称字符串,未找到返回nullptr

◆ toupper_name()

template<typename ENUMT>
const char * ngl::tools::enum2name< ENUMT >::toupper_name ( const ENUMT aenum,
int anum = 0 )
inlinestatic

获取枚举值的大写名称。

Parameters
aenum枚举值
anum分组号,默认为0
Returns
const char* 大写名称字符串,未找到返回nullptr

The documentation for this class was generated from the following file: