枚举类型

枚举类型

GLib 类型系统提供了枚举和标志类型的基础类型。枚举类型是由与数字值关联的一系列标识符组成的;标志类型类似于枚举,但允许通过按位或操作组合其值。

已注册的枚举或标志类型会将一个名称和一个昵称与每个允许的值关联,而方法 g_enum_get_value_by_name()g_enum_get_value_by_nick()g_flags_get_value_by_name()g_flags_get_value_by_nick() 可以通过名称或昵称查找值。

当使用 g_param_spec_enum()g_param_spec_flags() 将枚举或标志类型向 GLib 类型系统注册时,可以使用它作为对象属性的值类型。

GObject 附带了一个名为 glib-mkenums 的实用程序,它可以根据 C 枚举定义构建合适的类型注册函数。

获取枚举值字符串表示形式的示例

GEnumClass *enum_class;
GEnumValue *enum_value;

enum_class = g_type_class_ref (EXAMPLE_TYPE_ENUM);
enum_value = g_enum_get_value (enum_class, EXAMPLE_ENUM_FOO);

g_print ("Name: %s\n", enum_value->value_name);

g_type_class_unref (enum_class);

或者,可以使用 g_enum_to_string()