Enums and Flags

Перечисления и типовые флажки

Краткое описание


#include <glib-object.h>


                    GEnumClass;
                    GFlagsClass;
#define             G_ENUM_CLASS_TYPE                   (class)
#define             G_ENUM_CLASS_TYPE_NAME              (class)
#define             G_TYPE_IS_ENUM                      (type)
#define             G_ENUM_CLASS                        (class)
#define             G_IS_ENUM_CLASS                     (class)
#define             G_TYPE_IS_FLAGS                     (type)
#define             G_FLAGS_CLASS                       (class)
#define             G_IS_FLAGS_CLASS                    (class)
#define             G_FLAGS_CLASS_TYPE                  (class)
#define             G_FLAGS_CLASS_TYPE_NAME             (class)
                    GEnumValue;
                    GFlagsValue;
GEnumValue*         g_enum_get_value                    (GEnumClass *enum_class,
                                                         gint value);
GEnumValue*         g_enum_get_value_by_name            (GEnumClass *enum_class,
                                                         const gchar *name);
GEnumValue*         g_enum_get_value_by_nick            (GEnumClass *enum_class,
                                                         const gchar *nick);
GFlagsValue*        g_flags_get_first_value             (GFlagsClass *flags_class,
                                                         guint value);
GFlagsValue*        g_flags_get_value_by_name           (GFlagsClass *flags_class,
                                                         const gchar *name);
GFlagsValue*        g_flags_get_value_by_nick           (GFlagsClass *flags_class,
                                                         const gchar *nick);
GType               g_enum_register_static              (const gchar *name,
                                                         const GEnumValue *const _static_values);
GType               g_flags_register_static             (const gchar *name,
                                                         const GFlagsValue *const _static_values);
void                g_enum_complete_type_info           (GType g_enum_type,
                                                         GTypeInfo *info,
                                                         const GEnumValue *const _values);
void                g_flags_complete_type_info          (GType g_flags_type,
                                                         GTypeInfo *info,
                                                         const GFlagsValue *const _values);

Описание

Система типов 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() могут находить значение по их имени или псевдониму. Когда перечисление или типовые флаги зарегистрированы системой типов GLib, они могут использоваться как типовое значение для свойств объекта, используя g_param_spec_enum() илиg_param_spec_flags().

GObject устанавливается с помощью утилиты называемой glib-mkenums которая может конструировать подходящий тип регистрационных функций из определённых C перечислений.

Детали

GEnumClass

Класс типового перечисления содержит информацию о возможных значениях.

GTypeClass g_type_class;

родительский класс

gint minimum;

минимально-возможное значение.

gint maximum;

максимально-возможное значение.

guint n_values;

количество возможных значений.

GEnumValue *values;

массив структур GEnumValue описывающих индивидуальные значения.

GFlagsClass

Класс типовых флажков содержит информацию об их возможных значениях.

GTypeClass g_type_class;

родительский класс

guint mask;

маска покрывающая возможные значения.

guint n_values;

количество возможных значений.

GFlagsValue *values;

массив структур GFlagsValue описывающих индивидуальные значения.

G_ENUM_CLASS_TYPE()

Возвращает идентификатор типа из полученной структуры GEnumClass.

class :

G_ENUM_CLASS_TYPE_NAME()

Возвращает статичное имя типа полученное из сструктуры GEnumClass.

class :

G_TYPE_IS_ENUM()

Возвращает является ли type "is a" G_TYPE_ENUM.

type :

GType ID.

G_ENUM_CLASS()

Приводит производную структуру GEnumClass в структуру GEnumClass.

class :

допустимая GEnumClass

G_IS_ENUM_CLASS()

Проверяет является ли class "is a" допустимой структурой GEnumClass типа G_TYPE_ENUM или производной.

class :

G_TYPE_IS_FLAGS()

Возвращает является ли type "is a" G_TYPE_FLAGS.

type :

GType ID.

G_FLAGS_CLASS()

Приводит производную структуру GFlagsClass в структуру GFlagsClass.

class :

допустимая GFlagsClass

G_IS_FLAGS_CLASS()

Проверяет является ли class "is a" допустимой структурой GFlagsClass типа G_TYPE_FLAGS или производной.

G_FLAGS_CLASS_TYPE()

Возвращает идентификатор типа из полученной сструктуры GFlagsClass.

G_FLAGS_CLASS_TYPE_NAME()

Возвращает статичное имя из полученной сструктуры GFlagsClass.

GEnumValue

Структура содержащая единственное значение перечисления, его имя, и его псевдоним.

gint value;

значение перечисления

const gchar *value_name;

имя значения

const gchar *value_nick;

псевдоним значения

GFlagsValue

Структура содержащая единственное значение флажка, его имя, и его псевдоним.

guint value;

значение флажка

const gchar *value_name;

имя значения

const gchar *value_nick;

псевдоним значения

g_enum_get_value ()

Возвращает GEnumValue для значения.

enum_class :

value :

значение для поиска

Возвращает :

GEnumValue для value, или NULL если value не член перечисления

g_enum_get_value_by_name ()

Находит GEnumValue по имени.

enum_class :

name :

имя для поиска

Возвращает :

GEnumValue с именем name, или NULL если перечисление не имеет член с таким именем

g_enum_get_value_by_nick ()

Находит GEnumValue по псевдониму.

enum_class :

nick :

псевдоним для поиска

Возвращает :

GEnumValue с псевдонимом nick, или NULL если перечисление не имеет член с таким псевдонимом

g_flags_get_first_value ()

Возвращает первое GFlagsValue которое устанавливается в value.

flags_class :

value :

значение

Возвращает :

первое GFlagsValue которое установлено в value, или NULL если не установлено

g_flags_get_value_by_name ()

Находит GFlagsValue по имени.

flags_class :

name :

имя для поиска

Возвращает :

GFlagsValue с именем name, или NULL если нет флага с таким именем

g_flags_get_value_by_nick ()

Находит GFlagsValue по псевдониму.

flags_class :

nick :

псевдоним для поиска

Возвращает :

GFlagsValue с псевдонимом nick, или NULL если нет флага стаким псевдонимом

g_enum_register_static ()

Регистрирует новый статичный тип перечисления с именем name.

Обычно более удобно позволить glib-mkenums сгенирировать функцию my_enum_get_type() из обычного определения перечисления C, чем самостоятельно писать используяg_enum_register_static().

name :

Nul-завершённая строка используемая как имя нового типа.

_static_values :

Возвращает :

Идентификатор нового типа.

g_flags_register_static ()

Регистрирует новый статичный флаговый тип с именем name.

Обычно более удобно позволить glib-mkenums сгенирировать функцию my_flags_get_type() из обычного определения перечисления C, чем самостоятельно писать используяg_flags_register_static().

name :

Nul-завершённая строка используемая как имя нового типа.

_static_values :

Возвращает :

Идентификатор нового типа.

g_enum_complete_type_info ()

Эта функция предназначена для вызова из функции complete_type_info() реализации GTypePlugin, как показано в следующем примере:

g_enum_type :

типовой идентификатор заполняемого типа

info :

Структура GTypeInfo для заполнения

_values :

g_flags_complete_type_info ()

Эта функция предназначена для вызова из функции complete_type_info() реализации GTypePlugin, смотрите пример для g_enumeration_complete_type_info() выше.

g_flags_type :

типовой идентификатор заполняемого типа

info :

Структура GTypeInfo для заполнения

_values :

Last updated

Was this helpful?