GLib
  • Initial page
  • I. Концепция
    • Background
    • Типы данных и программирование
  • Динамическая система типов Glib
    • Введение
    • Функции копирования
    • Соглашения
    • Неинстанциируемые не классифицированные базовые типы
    • Инстанциируемые классифицируемые типы: объекты
    • Неинстанциированные классифицированные типы: Интерфейсы.
  • Основной класс GObject
    • Введение
    • Инстанциация объекта
    • Объектное управление памятью
    • Свойства объекта
  • Система сообщений GObject
    • Замыкания
    • Сигналы
  • II. Описание API
    • GType
    • GTypePlugin
    • GTypeModule
    • GObject часть 1
    • GObject часть 2
    • Enums and Flags
    • GBoxed
    • Generic Values
    • Parameters and Values часть 1
    • Parameters and Values часть 2
    • Parameters and Values часть 3, ага
    • Value arrays
  • III. Описание инструментов
    • glib-mkenums
    • glib-genmarshal
    • gobject-query
  • IV. Руководство
    • Как определить и реализовать новый GObject?
    • Объектные методы
    • Как определять и реализовывать Интерфейсы?
    • Как создавать и использовать сигналы
    • Как пользователи могут злоупотреблять сигналами (и почему некоторые думают что это хорошо)
  • V. Об инструментах
    • Об инструментах
  • GTK 4
    • GtkApplication и GtkApplicationWindow
    • Widgets
Powered by GitBook
On this page
  • Краткое описание
  • Описание
  • Детали

Was this helpful?

  1. II. Описание API

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);

Описание

Детали

GEnumClass

typedef struct {
  GTypeClass  g_type_class;

  gint	      minimum;
  gint	      maximum;
  guint	      n_values;
  GEnumValue *values;
} GEnumClass;

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

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

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

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

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

GFlagsClass

typedef struct {
  GTypeClass   g_type_class;
  
  guint	       mask;
  guint	       n_values;
  GFlagsValue *values;
} GFlagsClass;

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

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

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

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

G_ENUM_CLASS_TYPE()

#define G_ENUM_CLASS_TYPE(class)       (G_TYPE_FROM_CLASS (class))

class :

G_ENUM_CLASS_TYPE_NAME()

#define G_ENUM_CLASS_TYPE_NAME(class)  (g_type_name (G_ENUM_CLASS_TYPE (class)))

class :

G_TYPE_IS_ENUM()

#define G_TYPE_IS_ENUM(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM)

type :

G_ENUM_CLASS()

#define G_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass))

class :

G_IS_ENUM_CLASS()

#define G_IS_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM))

class :

G_TYPE_IS_FLAGS()

#define G_TYPE_IS_FLAGS(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS)

type :

G_FLAGS_CLASS()

#define G_FLAGS_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass))

class :

G_IS_FLAGS_CLASS()

#define G_IS_FLAGS_CLASS(class)        (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS))

class :

G_FLAGS_CLASS_TYPE()

#define G_FLAGS_CLASS_TYPE(class)      (G_TYPE_FROM_CLASS (class))

class :

G_FLAGS_CLASS_TYPE_NAME()

#define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class)))

class :

GEnumValue

typedef struct {
  gint	 value;
  const gchar *value_name;
  const gchar *value_nick;
} GEnumValue;

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

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

имя значения

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

GFlagsValue

typedef struct {
  guint	 value;
  const gchar *value_name;
  const gchar *value_nick;
} GFlagsValue;

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

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

имя значения

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

g_enum_get_value ()

GEnumValue*         g_enum_get_value                    (GEnumClass *enum_class,
                                                         gint value);

enum_class :

value :

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

Возвращает :

g_enum_get_value_by_name ()

GEnumValue*         g_enum_get_value_by_name            (GEnumClass *enum_class,
                                                         const gchar *name);

enum_class :

name :

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

Возвращает :

g_enum_get_value_by_nick ()

GEnumValue*         g_enum_get_value_by_nick            (GEnumClass *enum_class,
                                                         const gchar *nick);

enum_class :

nick :

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

Возвращает :

g_flags_get_first_value ()

GFlagsValue*        g_flags_get_first_value             (GFlagsClass *flags_class,
                                                         guint value);

flags_class :

value :

значение

Возвращает :

g_flags_get_value_by_name ()

GFlagsValue*        g_flags_get_value_by_name           (GFlagsClass *flags_class,
                                                         const gchar *name);

flags_class :

name :

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

Возвращает :

g_flags_get_value_by_nick ()

GFlagsValue*        g_flags_get_value_by_nick           (GFlagsClass *flags_class,
                                                         const gchar *nick);

flags_class :

nick :

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

Возвращает :

g_enum_register_static ()

GType               g_enum_register_static              (const gchar *name,
                                                         const GEnumValue *const _static_values);

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

name :

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

_static_values :

Возвращает :

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

g_flags_register_static ()

GType               g_flags_register_static             (const gchar *name,
                                                         const GFlagsValue *const _static_values);

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

name :

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

_static_values :

Возвращает :

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

g_enum_complete_type_info ()

void                g_enum_complete_type_info           (GType g_enum_type,
                                                         GTypeInfo *info,
                                                         const GEnumValue *const _values);
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 :

_values :

g_flags_complete_type_info ()

void                g_flags_complete_type_info          (GType g_flags_type,
                                                         GTypeInfo *info,
                                                         const GFlagsValue *const _values);

g_flags_type :

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

info :

_values :

PreviousGObject часть 2NextGBoxed

Last updated 4 years ago

Was this helpful?

Система типов GLib обеспечивает базовые типы для перечислений и типовых флажков. (Типовые флаги похожи на перечисления, но позволяют поразрядное комбинирование своих значений). Регистрация перечисления или типовых флажков связывает имя и псевдоним с каждым возможным значением, а методы ,, и могут находить значение по их имени или псевдониму. Когда перечисление или типовые флаги зарегистрированы системой типов GLib, они могут использоваться как типовое значение для свойств объекта, используя или.

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

g_type_class;

minimum;

maximum;

n_values;

*values;

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

g_type_class;

mask;

n_values;

*values;

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

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

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

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

ID.

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

допустимая

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

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

ID.

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

допустимая

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

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

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

value;

const *value_name;

const *value_nick;

value;

const *value_name;

const *value_nick;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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-mkenums
GEnumClass
GEnumClass
G_TYPE_ENUM
GEnumClass
GEnumClass
GEnumClass
G_TYPE_ENUM
G_TYPE_FLAGS
GFlagsClass
GFlagsClass
GFlagsClass
G_TYPE_FLAGS
GFlagsClass
GFlagsClass
GEnumValue
GEnumValue
GEnumValue
GFlagsValue
GFlagsValue
GFlagsValue
glib-mkenums
g_enum_register_static()
glib-mkenums
g_flags_register_static()
GTypePlugin
GTypePlugin
GTypeClass
gint
gint
guint
GEnumValue
GEnumValue
GTypeClass
guint
guint
GFlagsValue
GFlagsValue
GEnumClass
GEnumClass
GType
GEnumClass
GEnumClass
GType
GFlagsClass
GFlagsClass
GFlagsClass
GFlagsClass
gint
gchar
gchar
guint
gchar
gchar
GEnumClass
GEnumValue
NULL
GEnumClass
GEnumValue
NULL
GEnumClass
GEnumValue
NULL
GFlagsClass
GFlagsValue
NULL
GFlagsClass
GFlagsValue
NULL
GFlagsClass
GFlagsValue
NULL
GTypeInfo
GTypeInfo