Справочное описание GObject | ||||
---|---|---|---|---|
#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 перечислений.
typedef struct {
GTypeClass g_type_class;
gint minimum;
gint maximum;
guint n_values;
GEnumValue *values;
} GEnumClass;
Класс типового перечисления содержит информацию о возможных значениях.
GTypeClass
g_type_class ; |
родительский класс |
gint
minimum ; |
минимально-возможное значение. |
gint
maximum ; |
максимально-возможное значение. |
guint
n_values ; |
количество возможных значений. |
GEnumValue *values ; |
массив структур GEnumValue описывающих индивидуальные значения. |
typedef struct {
GTypeClass g_type_class;
guint mask;
guint n_values;
GFlagsValue *values;
} GFlagsClass;
Класс типовых флажков содержит информацию об их возможных значениях.
GTypeClass g_type_class ; |
родительский класс |
guint
mask ; |
маска покрывающая возможные значения. |
guint
n_values ; |
количество возможных значений. |
GFlagsValue *values ; |
массив структур GFlagsValue описывающих индивидуальные значения. |
#define G_ENUM_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class))
Возвращает идентификатор типа из полученной структуры GEnumClass.
class : |
GEnumClass |
#define G_ENUM_CLASS_TYPE_NAME(class) (g_type_name (G_ENUM_CLASS_TYPE (class)))
Возвращает статичное имя типа полученное из сструктуры GEnumClass.
class : |
GEnumClass |
#define G_TYPE_IS_ENUM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM)
Возвращает является ли type
"is a" G_TYPE_ENUM
.
type : |
GType ID. |
#define G_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass))
Приводит производную структуру GEnumClass в структуру GEnumClass.
class : |
допустимая GEnumClass |
#define G_IS_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM))
Проверяет является ли class
"is a" допустимой структурой
GEnumClass типа
G_TYPE_ENUM
или производной.
class : |
GEnumClass |
#define G_TYPE_IS_FLAGS(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS)
Возвращает является ли type
"is a" G_TYPE_FLAGS
.
type : |
GType ID. |
#define G_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass))
Приводит производную структуру GFlagsClass в структуру GFlagsClass.
class : |
допустимая GFlagsClass |
#define G_IS_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS))
Проверяет является ли class
"is a" допустимой структурой
GFlagsClass типа
G_TYPE_FLAGS
или производной.
class : |
GFlagsClass |
#define G_FLAGS_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class))
Возвращает идентификатор типа из полученной сструктуры GFlagsClass.
class : |
GFlagsClass |
#define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class)))
Возвращает статичное имя из полученной сструктуры GFlagsClass.
class : |
GFlagsClass |
typedef struct {
gint value;
const gchar *value_name;
const gchar *value_nick;
} GEnumValue;
Структура содержащая единственное значение перечисления, его имя, и его псевдоним.
typedef struct {
guint value;
const gchar *value_name;
const gchar *value_nick;
} GFlagsValue;
Структура содержащая единственное значение флажка, его имя, и его псевдоним.
GEnumValue* g_enum_get_value (GEnumClass *enum_class,
gint value);
Возвращает GEnumValue для значения.
enum_class : |
GEnumClass |
value : |
значение для поиска |
Возвращает : | GEnumValue для
value , или
NULL если
value не член перечисления
|
GEnumValue* g_enum_get_value_by_name (GEnumClass *enum_class,
const gchar *name);
Находит GEnumValue по имени.
enum_class : |
GEnumClass |
name : |
имя для поиска |
Возвращает : | GEnumValue с именем
name , или
NULL
если перечисление не имеет член с таким именем
|
GEnumValue* g_enum_get_value_by_nick (GEnumClass *enum_class,
const gchar *nick);
Находит GEnumValue по псевдониму.
enum_class : |
GEnumClass |
nick : |
псевдоним для поиска |
Возвращает : | GEnumValue с псевдонимом
nick , или
NULL
если перечисление не имеет член с таким псевдонимом
|
GFlagsValue* g_flags_get_first_value (GFlagsClass *flags_class,
guint value);
Возвращает первое GFlagsValue
которое устанавливается в value
.
flags_class : |
GFlagsClass |
value : |
значение |
Возвращает : | первое GFlagsValue
которое установлено в value , или
NULL если не установлено
|
GFlagsValue* g_flags_get_value_by_name (GFlagsClass *flags_class,
const gchar *name);
Находит GFlagsValue по имени.
flags_class : |
GFlagsClass |
name : |
имя для поиска |
Возвращает : | GFlagsValue с именем
name , или
NULL если нет флага с таким именем
|
GFlagsValue* g_flags_get_value_by_nick (GFlagsClass *flags_class,
const gchar *nick);
Находит GFlagsValue по псевдониму.
flags_class : |
GFlagsClass |
nick : |
псевдоним для поиска |
Возвращает : | GFlagsValue с псевдонимом
nick , или
NULL если нет флага стаким псевдонимом
|
GType g_enum_register_static (const gchar *name,
const GEnumValue *const _static_values);
Регистрирует новый статичный тип перечисления с именем name
.
Обычно более удобно позволить glib-mkenums сгенирировать
функцию my_enum_get_type()
из обычного определения перечисления C, чем самостоятельно писать используя
g_enum_register_static()
.
name : |
Nul-завершённая строка используемая как имя нового типа. |
_static_values : |
|
Возвращает : | Идентификатор нового типа. |
GType g_flags_register_static (const gchar *name,
const GFlagsValue *const _static_values);
Регистрирует новый статичный флаговый тип с именем name
.
Обычно более удобно позволить glib-mkenums сгенирировать
функцию my_flags_get_type()
из обычного определения перечисления C, чем самостоятельно писать используя
g_flags_register_static()
.
name : |
Nul-завершённая строка используемая как имя нового типа. |
_static_values : |
|
Возвращает : | Идентификатор нового типа. |
void g_enum_complete_type_info (GType g_enum_type,
GTypeInfo *info,
const GEnumValue *const _values);
Эта функция предназначена для вызова из функции complete_type_info()
реализации
GTypePlugin, как показано в следующем примере:
static void
my_enum_complete_type_info (GTypePlugin *plugin,
GType g_type,
GTypeInfo *info,
GTypeValueTable *value_table)
{
static const GEnumValue values[] = {
{ MY_ENUM_FOO, "MY_ENUM_FOO", "foo" },
{ MY_ENUM_BAR, "MY_ENUM_BAR", "bar" },
{ 0, NULL, NULL }
};
g_enum_complete_type_info (type, info, values);
}
g_enum_type : |
типовой идентификатор заполняемого типа |
info : |
Структура GTypeInfo для заполнения |
_values : |
void g_flags_complete_type_info (GType g_flags_type,
GTypeInfo *info,
const GFlagsValue *const _values);
Эта функция предназначена для вызова из функции complete_type_info()
реализации
GTypePlugin, смотрите пример для
g_enumeration_complete_type_info()
выше.
g_flags_type : |
типовой идентификатор заполняемого типа |
info : |
Структура GTypeInfo для заполнения |
_values : |
GParamSpecEnum, GParamSpecFlags, g_param_spec_enum()
, g_param_spec_flags()
,
glib-mkenums