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

GType

GType — GLib окружение идентификации типов и система управления

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


#include <glib-object.h>


typedef             GType;
#define             G_TYPE_FUNDAMENTAL                  (type)
#define             G_TYPE_FUNDAMENTAL_MAX
#define             G_TYPE_MAKE_FUNDAMENTAL             (x)
#define             G_TYPE_IS_ABSTRACT                  (type)
#define             G_TYPE_IS_DERIVED                   (type)
#define             G_TYPE_IS_FUNDAMENTAL               (type)
#define             G_TYPE_IS_VALUE_TYPE                (type)
#define             G_TYPE_HAS_VALUE_TABLE              (type)
#define             G_TYPE_IS_CLASSED                   (type)
#define             G_TYPE_IS_INSTANTIATABLE            (type)
#define             G_TYPE_IS_DERIVABLE                 (type)
#define             G_TYPE_IS_DEEP_DERIVABLE            (type)
#define             G_TYPE_IS_INTERFACE                 (type)
                    GTypeInterface;
                    GTypeInstance;
                    GTypeClass;
                    GTypeInfo;
                    GTypeFundamentalInfo;
                    GInterfaceInfo;
                    GTypeValueTable;
#define             G_TYPE_FROM_INSTANCE                (instance)
#define             G_TYPE_FROM_CLASS                   (g_class)
#define             G_TYPE_FROM_INTERFACE               (g_iface)
#define             G_TYPE_INSTANCE_GET_CLASS           (instance, g_type, c_type)
#define             G_TYPE_INSTANCE_GET_INTERFACE       (instance, g_type, c_type)
#define             G_TYPE_INSTANCE_GET_PRIVATE         (instance, g_type, c_type)
#define             G_TYPE_CHECK_INSTANCE               (instance)
#define             G_TYPE_CHECK_INSTANCE_CAST          (instance, g_type, c_type)
#define             G_TYPE_CHECK_INSTANCE_TYPE          (instance, g_type)
#define             G_TYPE_CHECK_CLASS_CAST             (g_class, g_type, c_type)
#define             G_TYPE_CHECK_CLASS_TYPE             (g_class, g_type)
#define             G_TYPE_CHECK_VALUE                  (value)
#define             G_TYPE_CHECK_VALUE_TYPE             (value, g_type)
#define             G_TYPE_FLAG_RESERVED_ID_BIT
void                g_type_init                         (void);
enum                GTypeDebugFlags;
void                g_type_init_with_debug_flags        (GTypeDebugFlags debug_flags);
const gchar*        g_type_name                         (GType type);
GQuark              g_type_qname                        (GType type);
GType               g_type_from_name                    (const gchar *name);
GType               g_type_parent                       (GType type);
guint               g_type_depth                        (GType type);
GType               g_type_next_base                    (GType leaf_type,
                                                         GType root_type);
gboolean            g_type_is_a                         (GType type,
                                                         GType is_a_type);
gpointer            g_type_class_ref                    (GType type);
gpointer            g_type_class_peek                   (GType type);
gpointer            g_type_class_peek_static            (GType type);
void                g_type_class_unref                  (gpointer g_class);
gpointer            g_type_class_peek_parent            (gpointer g_class);
void                g_type_class_add_private            (gpointer g_class,
                                                         gsize private_size);
gpointer            g_type_interface_peek               (gpointer instance_class,
                                                         GType iface_type);
gpointer            g_type_interface_peek_parent        (gpointer g_iface);
gpointer            g_type_default_interface_ref        (GType g_type);
gpointer            g_type_default_interface_peek       (GType g_type);
void                g_type_default_interface_unref      (gpointer g_iface);
GType*              g_type_children                     (GType type,
                                                         guint *n_children);
GType*              g_type_interfaces                   (GType type,
                                                         guint *n_interfaces);
GType*              g_type_interface_prerequisites      (GType interface_type,
                                                         guint *n_prerequisites);
void                g_type_set_qdata                    (GType type,
                                                         GQuark quark,
                                                         gpointer data);
gpointer            g_type_get_qdata                    (GType type,
                                                         GQuark quark);
void                g_type_query                        (GType type,
                                                         GTypeQuery *query);
                    GTypeQuery;
void                (*GBaseInitFunc)                    (gpointer g_class);
void                (*GBaseFinalizeFunc)                (gpointer g_class);
void                (*GClassInitFunc)                   (gpointer g_class,
                                                         gpointer class_data);
void                (*GClassFinalizeFunc)               (gpointer g_class,
                                                         gpointer class_data);
void                (*GInstanceInitFunc)                (GTypeInstance *instance,
                                                         gpointer g_class);
void                (*GInterfaceInitFunc)               (gpointer g_iface,
                                                         gpointer iface_data);
void                (*GInterfaceFinalizeFunc)           (gpointer g_iface,
                                                         gpointer iface_data);
gboolean            (*GTypeClassCacheFunc)              (gpointer cache_data,
                                                         GTypeClass *g_class);
enum                GTypeFlags;
enum                GTypeFundamentalFlags;
GType               g_type_register_static              (GType parent_type,
                                                         const gchar *type_name,
                                                         const GTypeInfo *info,
                                                         GTypeFlags flags);
GType               g_type_register_static_simple       (GType parent_type,
                                                         const gchar *type_name,
                                                         guint class_size,
                                                         GClassInitFunc class_init,
                                                         guint instance_size,
                                                         GInstanceInitFunc instance_init,
                                                         GTypeFlags flags);
GType               g_type_register_dynamic             (GType parent_type,
                                                         const gchar *type_name,
                                                         GTypePlugin *plugin,
                                                         GTypeFlags flags);
GType               g_type_register_fundamental         (GType type_id,
                                                         const gchar *type_name,
                                                         const GTypeInfo *info,
                                                         const GTypeFundamentalInfo *finfo,
                                                         GTypeFlags flags);
void                g_type_add_interface_static         (GType instance_type,
                                                         GType interface_type,
                                                         const GInterfaceInfo *info);
void                g_type_add_interface_dynamic        (GType instance_type,
                                                         GType interface_type,
                                                         GTypePlugin *plugin);
void                g_type_interface_add_prerequisite   (GType interface_type,
                                                         GType prerequisite_type);
GTypePlugin*        g_type_get_plugin                   (GType type);
GTypePlugin*        g_type_interface_get_plugin         (GType instance_type,
                                                         GType interface_type);
GType               g_type_fundamental_next             (void);
GType               g_type_fundamental                  (GType type_id);
GTypeInstance*      g_type_create_instance              (GType type);
void                g_type_free_instance                (GTypeInstance *instance);
void                g_type_add_class_cache_func         (gpointer cache_data,
                                                         GTypeClassCacheFunc cache_func);
void                g_type_remove_class_cache_func      (gpointer cache_data,
                                                         GTypeClassCacheFunc cache_func);
void                g_type_class_unref_uncached         (gpointer g_class);
void                g_type_add_interface_check          (gpointer check_data,
                                                         GTypeInterfaceCheckFunc check_func);
void                g_type_remove_interface_check       (gpointer check_data,
                                                         GTypeInterfaceCheckFunc check_func);
void                (*GTypeInterfaceCheckFunc)          (gpointer check_data,
                                                         gpointer g_iface);
GTypeValueTable*    g_type_value_table_peek             (GType type);
#define             G_DEFINE_TYPE                       (TN, t_n, T_P)
#define             G_DEFINE_TYPE_WITH_CODE             (TN, t_n, T_P, _C_)
#define             G_DEFINE_ABSTRACT_TYPE              (TN, t_n, T_P)
#define             G_DEFINE_ABSTRACT_TYPE_WITH_CODE    (TN, t_n, T_P, _C_)
#define             G_IMPLEMENT_INTERFACE               (TYPE_IFACE, iface_init)
#define             G_DEFINE_TYPE_EXTENDED              (TN, t_n, T_P, _f_, _C_)


#define             G_TYPE_INVALID
#define             G_TYPE_NONE
#define             G_TYPE_INTERFACE
#define             G_TYPE_CHAR
#define             G_TYPE_UCHAR
#define             G_TYPE_BOOLEAN
#define             G_TYPE_INT
#define             G_TYPE_UINT
#define             G_TYPE_LONG
#define             G_TYPE_ULONG
#define             G_TYPE_INT64
#define             G_TYPE_UINT64
#define             G_TYPE_ENUM
#define             G_TYPE_FLAGS
#define             G_TYPE_FLOAT
#define             G_TYPE_DOUBLE
#define             G_TYPE_STRING
#define             G_TYPE_POINTER
#define             G_TYPE_BOXED
#define             G_TYPE_PARAM
#define             G_TYPE_OBJECT
#define             G_TYPE_GTYPE

#define             G_TYPE_RESERVED_GLIB_FIRST
#define             G_TYPE_RESERVED_GLIB_LAST
#define             G_TYPE_RESERVED_BSE_FIRST
#define             G_TYPE_RESERVED_BSE_LAST
#define             G_TYPE_RESERVED_USER_FIRST

Описание

В заключительном слове об именах типов. Такой идентификатор должен быть по крайней мере длиной из трёх символов. Максимального предела длины не существует. Первый символ должен быть буквой (a-z или A-Z) или символом подчёркивания '_'. Последующие символы могут быть буквами, цифрами или одним из символов '-_+'.

Детали

GType

Числовое значение которое представляет уникальный идентификатор зарегистрированного типа.

G_TYPE_FUNDAMENTAL()

#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))

Возвращает базовый тип который наследует type. Базовые типы являются типами которые служат основой для производных типов, таким образом они являются корнями отдельных иерархий наследования.

type :

G_TYPE_FUNDAMENTAL_MAX

#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)

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

G_TYPE_MAKE_FUNDAMENTAL()

#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))

x :

номер базового типа.

G_TYPE_IS_ABSTRACT()

#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))

type :

G_TYPE_IS_DERIVED()

#define G_TYPE_IS_DERIVED(type)                 ((type) > G_TYPE_FUNDAMENTAL_MAX)

type :

G_TYPE_IS_FUNDAMENTAL()

#define G_TYPE_IS_FUNDAMENTAL(type)             ((type) <= G_TYPE_FUNDAMENTAL_MAX)

type :

G_TYPE_IS_VALUE_TYPE()

#define G_TYPE_IS_VALUE_TYPE(type)              (g_type_check_is_value_type (type))

type :

G_TYPE_HAS_VALUE_TABLE()

#define G_TYPE_HAS_VALUE_TABLE(type)            (g_type_value_table_peek (type) != NULL)

type :

G_TYPE_IS_CLASSED()

#define G_TYPE_IS_CLASSED(type)                 (g_type_test_flags ((type), G_TYPE_FLAG_CLASSED))

type :

G_TYPE_IS_INSTANTIATABLE()

#define G_TYPE_IS_INSTANTIATABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE))

type :

G_TYPE_IS_DERIVABLE()

#define G_TYPE_IS_DERIVABLE(type)               (g_type_test_flags ((type), G_TYPE_FLAG_DERIVABLE))

type :

G_TYPE_IS_DEEP_DERIVABLE()

#define G_TYPE_IS_DEEP_DERIVABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_DEEP_DERIVABLE))

type :

G_TYPE_IS_INTERFACE()

#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)

type :

GTypeInterface

typedef struct {
} GTypeInterface;

Непрозрачная структура используемая как основа всех интерфейсных типов.

GTypeInstance

typedef struct {
} GTypeInstance;

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

GTypeClass

typedef struct {
} GTypeClass;

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

GTypeInfo

typedef struct {
  /* interface types, classed types, instantiated types */
  guint16                class_size;
  
  GBaseInitFunc          base_init;
  GBaseFinalizeFunc      base_finalize;
  
  /* interface types, classed types, instantiated types */
  GClassInitFunc         class_init;
  GClassFinalizeFunc     class_finalize;
  gconstpointer          class_data;
  
  /* instantiated types */
  guint16                instance_size;
  guint16                n_preallocs;
  GInstanceInitFunc      instance_init;
  
  /* value handling */
  const GTypeValueTable	*value_table;
} GTypeInfo;

Размер сструктуры класса (требуется для интерфейсных, классифицированных и инстанцируемых типов).

Расположение основной инициализирующей функции (опционально).

Расположение основной финализирующей функции (опционально).

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

Расположение функции финализации класса для классов и типов. Расположение по умолчанию в vtable функции финализации интерфейсных типов. (опционально)

Данные обеспечиваемые пользователем помещаемые в классовые функции инициализация/финализация.

Размер экземпляра (объекта) сструктуры (запрашиваемый только для инстанциирования).

Расположение функции инициализирующей экземпляр (опционально, только для инстанциируемых типов).

GTypeFundamentalInfo

typedef struct {
  GTypeFundamentalFlags  type_flags;
} GTypeFundamentalInfo;

Структура обеспечивающая информацией систему типов специально для управления базовыми типами.

GInterfaceInfo

typedef struct {
  GInterfaceInitFunc     interface_init;
  GInterfaceFinalizeFunc interface_finalize;
  gpointer               interface_data;
} GInterfaceInfo;

Структура обеспечивает информацию для системы типов которая используется специально для управления интерфейсными типами.

расположение функции инициализации интерфейса

расположение функции финализации интерфейса

пользовательские данные для функций инициализации/финализации интерфейса

GTypeValueTable

typedef struct {
  void     (*value_init)         (GValue       *value);
  void     (*value_free)         (GValue       *value);
  void     (*value_copy)         (const GValue *src_value,
				  GValue       *dest_value);
  /* varargs functionality (optional) */
  gpointer (*value_peek_pointer) (const GValue *value);
  gchar	    *collect_format;
  gchar*   (*collect_value)      (GValue       *value,
				  guint         n_collect_values,
				  GTypeCValue  *collect_values,
				  guint		collect_flags);
  gchar	    *lcopy_format;
  gchar*   (*lcopy_value)        (const GValue *value,
				  guint         n_collect_values,
				  GTypeCValue  *collect_values,
				  guint		collect_flags);
} GTypeValueTable;

value_init ()

value_free ()

value_copy ()

value_peek_pointer ()

Если значение содержимого заполнено указателем, таким как объекты или строки, возвращает этот указатель, таким образом вызывающая программа может посмотреть текущее содержимое. Расширение нашего примера строки выше:

Формат строки описывающий как накапливается содержимое этого значения поразрядно. Каждый символ в формате представляет накапливаемый параметр и непосредственно символы указывают тип параметра. В настоящее время поддерживаются параметры:

Должно быть отмечено, что для конструирования списка переменных параметров, ANSI C преобразует каждый тип меньше чем целочисленное в int, а floats в doubles. Поэтому для накапливания short int или char, нужно использовать 'i', а для накапливания floats 'd'.

collect_value ()

Должно быть отмечено, что это вообще плохая идея следовать подсказке G_VALUE_NOCOPY_CONTENTS для подсчёта типовых ссылок. Из-за повторно используемого запроса и условия подсчёта ссылок с помощью кода GSignal, подсчёт ссылок должен всегда увеличиваться подсчёта ссылок содержимого хранящегося в массиве value->data. На мгновение отклонимся от нашего примера строки, и рассмотрим экземпляр реализации для collect_value() с ""

Формат описывающий аргументы накопленные для lcopy_value, аналогичен collect_format. Обычно, строка lcopy_format состоит только из 'p' для обеспеченияlcopy_value() указателями на сохраняемые расположения.

lcopy_value ()

Эта функция отвечает за сохранение содержимого value в параметрах помещаемых через список переменных параметров которые накоплены в collect_valuesсогласно lcopy_format. n_collect_values равен длине строки lcopy_format, а collect_flags может содержать G_VALUE_NOCOPY_CONTENTS. В отличие от collect_value(), lcopy_value() обязан всегда должным образом поддерживать G_VALUE_NOCOPY_CONTENTS. Подобно collect_value() функция может прерываться преждевременно возвращая вновь распределённую строку описывающую произошедшую ошибку. Завершаем пример строки:

И демонстрационная версия lcopy_value() для подсчёта ссылок типов:

G_TYPE_FROM_INSTANCE()

#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))

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

Этот макрос должен использоваться только при реализации типа.

instance :

G_TYPE_FROM_CLASS()

#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)

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

Этот макрос должен использоваться только при реализации типа.

g_class :

G_TYPE_FROM_INTERFACE()

#define G_TYPE_FROM_INTERFACE(g_iface)                          (((GTypeInterface*) (g_iface))->g_type)

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

Этот макрос должен использоваться только при реализации типа.

g_iface :

G_TYPE_INSTANCE_GET_CLASS()

#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))

Возвращает структуру класса полученного instance, приводя к указанному типу предка экземпляра g_type.

Внимание

Этот макрос должен использоваться только при реализации типа.

instance :

g_type :

Тип возвращаемого родительского класса.

c_type :

C тип соответствующий g_type.

G_TYPE_INSTANCE_GET_INTERFACE()

#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))

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

Этот макрос должен использоваться только для реализации типа.

instance :

g_type :

Возвращаемые интерфейсный тип.

c_type :

C тип соответствующий g_type.

G_TYPE_INSTANCE_GET_PRIVATE()

#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type)   ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type)))

Этот макрос должен использоваться только при реализации типа.

instance :

экземпляр типа наследующий private_type.

g_type :

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

c_type :

C тип для закрытой сструктуры.

Начиная с версии 2.4

G_TYPE_CHECK_INSTANCE()

#define G_TYPE_CHECK_INSTANCE(instance)				(_G_TYPE_CHI ((GTypeInstance*) (instance)))

Этот макрос должен использоваться только при реализации типа.

instance :

G_TYPE_CHECK_INSTANCE_CAST()

#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))

Проверяет является ли instance экземпляром типа идентифицируемым g_type и издаёт предупреждение если это не так. Возвращает instance приведённый к указателю c_type.

Этот макрос должен использоваться только при реализации типа.

instance :

g_type :

возвращаемый тип.

c_type :

C тип соответствующий g_type.

G_TYPE_CHECK_INSTANCE_TYPE()

#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))

Этот макрос должен использоваться только при реализации типа.

instance :

g_type :

Проверяемый тип

G_TYPE_CHECK_CLASS_CAST()

#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))

Проверяет является ли g_class классовой структурой типа идентифицируемого g_type и издаёт предупреждение если это не так. Возвращает g_class приведённый к указателю c_type.

Этот макрос должен использоваться только при реализации типа.

g_class :

g_type :

Возвращаемый тип.

c_type :

C тип соответствующий g_type.

G_TYPE_CHECK_CLASS_TYPE()

#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))

Этот макрос должен использоваться только при реализации типа.

g_class :

g_type :

Проверяемый тип.

G_TYPE_CHECK_VALUE()

#define G_TYPE_CHECK_VALUE(value)				(_G_TYPE_CHV ((value)))

Этот макрос должен использоваться только при реализации типа.

value :

G_TYPE_CHECK_VALUE_TYPE()

#define G_TYPE_CHECK_VALUE_TYPE(value, g_type)			(_G_TYPE_CVH ((value), (g_type)))

Этот макрос должен использоваться только при реализации типа.

value :

g_type :

Проверяемый тип.

G_TYPE_FLAG_RESERVED_ID_BIT

#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))

Бит в числе типа который должен быть нетронутым.

g_type_init ()

void                g_type_init                         (void);

Перечисление GTypeDebugFlags

typedef enum	/*< skip >*/
{
  G_TYPE_DEBUG_NONE	= 0,
  G_TYPE_DEBUG_OBJECTS	= 1 << 0,
  G_TYPE_DEBUG_SIGNALS	= 1 << 1,
  G_TYPE_DEBUG_MASK	= 0x03
} GTypeDebugFlags;

G_TYPE_DEBUG_NONE

Не печатать сообщение.

G_TYPE_DEBUG_OBJECTS

Напечатать сообщение об подсчёте объекта.

G_TYPE_DEBUG_SIGNALS

Напечатать сообщение об эмиссии сигнала.

G_TYPE_DEBUG_MASK

Маска покрывающая все отладочные флаги.

g_type_init_with_debug_flags ()

void                g_type_init_with_debug_flags        (GTypeDebugFlags debug_flags);

debug_flags :

g_type_name ()

const gchar*        g_type_name                         (GType type);

Возвращает уникальное имя которое назначено типу ID (это привилегированный метод определения был ли определённый тип зарегистрирован для помещённого ID).

type :

Тип для которого возвращается имя.

Возвращает :

g_type_qname ()

GQuark              g_type_qname                        (GType type);

Возвращает соответствующий кварк названия типа ID.

type :

тип для которого возвращается кварк.

Возвращает :

Кварк имени типа или 0.

g_type_from_name ()

GType               g_type_from_name                    (const gchar *name);

Находит типовой ID из полученного имени типа, возвращает 0 если нет зарегистрированного типа с данным именем (это привилегированный метод определения по имени был ли зарегистрирован тип).

name :

Имя типа для поиска.

Возвращает :

Соответствующий типу ID или 0.

g_type_parent ()

GType               g_type_parent                       (GType type);

Возвращает прямого родителя типа переданного в типе. Если тип не имеет помещённого в него родителя, то есть это базовый тип, возвращается 0.

type :

Производный тип.

Возвращает :

Родительский тип.

g_type_depth ()

guint               g_type_depth                        (GType type);

Возвращает длину родословной помещенной в тип. Это включает сам тип непосредственно, поэтому базовые типы имеют глубину 1.

type :

Возвращает :

Глубина родословной type.

g_type_next_base ()

GType               g_type_next_base                    (GType leaf_type,
                                                         GType root_type);

Получает leaf_type и root_type который содержится в его родителе, возвращает тип непосредственно родителя root_type. Другими словами, эта функция определяет тип который получен непосредственно из root_type, который является также базовым классом leaf_type. Учитывая корневой тип и тип ответвления, эта функция может использоваться для определения типов и порядка в котором тип ответвления появляется из корневого типа.

leaf_type :

Потомок root_type и возвращаемый тип.

root_type :

Непосредственный родитель возвращаемого типа.

Возвращает :

Непосредственный ребёнок root_type и родитель leaf_type.

g_type_is_a ()

gboolean            g_type_is_a                         (GType type,
                                                         GType is_a_type);

Если is_a_type является производным типом, проверяет является ли type потомком is_a_type. Если is_a_type является интерфейсом, проверяет соответствует ли он type.

type :

Тип для проверки родословной.

is_a_type :

Возможный родитель type или интерфейс соответствующий type.

Возвращает :

g_type_class_ref ()

gpointer            g_type_class_ref                    (GType type);

Увеличивает количество ссылок классовой сструктуры принадлежащей type. Эта функция создаст запрашиваемый класс если он ещё не существует.

type :

Типовой ID классифицируемого типа.

Возвращает :

g_type_class_peek ()

gpointer            g_type_class_peek                   (GType type);

type :

Типовой ID классифицируемого типа.

Возвращает :

g_type_class_peek_static ()

gpointer            g_type_class_peek_static            (GType type);

type :

Типовой ID классифицируемого типа.

Возвращает :

Начиная с версии 2.4

g_type_class_unref ()

void                g_type_class_unref                  (gpointer g_class);

g_class :

g_type_class_peek_parent ()

gpointer            g_type_class_peek_parent            (gpointer g_class);

Эта удобная функция часто необходима при инициализации класса. Она возвращает структуру класса непосредственно родительского типа помещенного класса. Так как производные классы содержат количество ссылок их родительских классов пока они инстанциирубтся, возвращаемый класс будет всегда существовать. Эта функция очень похожа на:

g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (g_class)));

g_class :

Возвращает :

Родительский класс g_class.

g_type_class_add_private ()

void                g_type_class_add_private            (gpointer g_class,
                                                         gsize private_size);
typedef struct _MyObjectPrivate MyObjectPrivate;

struct _MyObjectPrivate {
  int some_field;
};

#define MY_OBJECT_GET_PRIVATE(o)  \
   (G_TYPE_INSTANCE_GET_PRIVATE ((o), MY_TYPE_OBJECT, MyObjectPrivate))

static void
my_object_class_init (MyObjectClass *klass)
{
  g_type_class_add_private (klass, sizeof (MyObjectPrivate));
}

static int
my_object_get_some_field (MyObject *my_object)
{
  MyObjectPrivate *priv = MY_OBJECT_GET_PRIVATE (my_object);

  return priv->some_field;
}

g_class :

классовая структура для инстанциируемого типа

private_size :

размер закрытой сструктуры.

Начиная с версии 2.4

g_type_interface_peek ()

gpointer            g_type_interface_peek               (gpointer instance_class,
                                                         GType iface_type);

instance_class :

iface_type :

ID интерфейса которому соответствует этот класс.

Возвращает :

g_type_interface_peek_parent ()

gpointer            g_type_interface_peek_parent        (gpointer g_iface);

g_iface :

Возвращает :

g_type_default_interface_ref ()

gpointer            g_type_default_interface_ref        (GType g_type);

Увеличивает количество ссылок для интерфейсного типа g_type, и возвращает значение по умолчанию интерфейс vtable для типа.

g_type :

интерфейсный тип

Возвращает :

Начиная с версии 2.4

g_type_default_interface_peek ()

gpointer            g_type_default_interface_peek       (GType g_type);

Если интерфейсный тип g_type в текущий момент используется, возвращает значение по умолчанию vtable интерфейса.

g_type :

интерфейсный тип

Возвращает :

Начиная с версии 2.4

g_type_default_interface_unref ()

void                g_type_default_interface_unref      (gpointer g_iface);

g_iface :

Начиная с версии 2.4

g_type_children ()

GType*              g_type_children                     (GType type,
                                                         guint *n_children);

type :

Родительский тип.

n_children :

Возвращает :

Вновь распределённый и 0-завершённый массив дочерних типов.

g_type_interfaces ()

GType*              g_type_interfaces                   (GType type,
                                                         guint *n_interfaces);

type :

Тип для списка интерфейсных типов.

n_interfaces :

Возвращает :

Вновь распределённый и 0-завершённый массив интерфейсных типов.

g_type_interface_prerequisites ()

GType*              g_type_interface_prerequisites      (GType interface_type,
                                                         guint *n_prerequisites);

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

interface_type :

тип интерфейса

n_prerequisites :

Возвращает :

Начиная с версии 2.2

g_type_set_qdata ()

void                g_type_set_qdata                    (GType type,
                                                         GQuark quark,
                                                         gpointer data);

Прикрепляет произвольные данные к типу.

type :

quark :

data :

данные

g_type_get_qdata ()

gpointer            g_type_get_qdata                    (GType type,
                                                         GQuark quark);

type :

quark :

Возвращает :

g_type_query ()

void                g_type_query                        (GType type,
                                                         GTypeQuery *query);

type :

query :

Обеспеченная пользователем структура которая заполняется константными значениями в случае успешного выполнения.

GTypeQuery

typedef struct {
  GType		type;
  const gchar  *type_name;
  guint		class_size;
  guint		instance_size;
} GTypeQuery;

имя типа.

размер сструктуры класса.

размер сструктуры экземпляра.

GBaseInitFunc ()

void                (*GBaseInitFunc)                    (gpointer g_class);

g_class :

GBaseFinalizeFunc ()

void                (*GBaseFinalizeFunc)                (gpointer g_class);

g_class :

GClassInitFunc ()

void                (*GClassInitFunc)                   (gpointer g_class,
                                                         gpointer class_data);

Это callback-функция используемая системой типов для инициализации класса определённого типа. Она должна инициализировать все статичные члены класса. Процесс инициализации класса включает:

1 - Копирование основных членов из родительского класса в структуру класса наследника.

2 - Инициализация нулём оставшихся членов не скопированных из родительского класса.

typedef struct {
  GObjectClass parent_class;
  gint         static_integer;
  gchar       *dynamic_string;
} TypeAClass;
static void
type_a_base_class_init (TypeAClass *class)
{
  class->dynamic_string = g_strdup ("some string");
}
static void
type_a_base_class_finalize (TypeAClass *class)
{
  g_free (class->dynamic_string);
}
static void
type_a_class_init (TypeAClass *class)
{
  class->static_integer = 42;
}

typedef struct {
  TypeAClass   parent_class;
  gfloat       static_float;
  GString     *dynamic_gstring;
} TypeBClass;
static void
type_b_base_class_init (TypeBClass *class)
{
  class->dynamic_gstring = g_string_new ("some other string");
}
static void
type_b_base_class_finalize (TypeBClass *class)
{
  g_string_free (class->dynamic_gstring);
}
static void
type_b_class_init (TypeBClass *class)
{
  class->static_float = 3.14159265358979323846;
}

g_class :

class_data :

GClassFinalizeFunc ()

void                (*GClassFinalizeFunc)               (gpointer g_class,
                                                         gpointer class_data);

g_class :

class_data :

GInstanceInitFunc ()

void                (*GInstanceInitFunc)                (GTypeInstance *instance,
                                                         gpointer g_class);

Это callback-функция используемая системой типов для инициализации нового экземпляра типа. Эта функция инициализирует все члены экземпляра и распределяет все ресурсы запрашиваемые ими. Инициализация производного экземпляра включает вызов всех инициализаторов экземпляров его родительских типов, поэтому член класса экземпляра изменяется в течение его инициализации чтобы всегда указывать на класс к которому принадлежит тип введённый в текущий инициализатор.

instance :

Инициализируемый экземпляр.

g_class :

Класс создаваемого типового экземпляра.

GInterfaceInitFunc ()

void                (*GInterfaceInitFunc)               (gpointer g_iface,
                                                         gpointer iface_data);

Это callback-функция используемая системой типов для инициализации нового интерфейса. Эта функция должна инициализировать все внутренние данные и распределять любые ресурсы запрошенные интерфейсом.

g_iface :

Структура для инициализации интерфейса.

iface_data :

GInterfaceFinalizeFunc ()

void                (*GInterfaceFinalizeFunc)           (gpointer g_iface,
                                                         gpointer iface_data);

g_iface :

Интерфейсная структура для финализации.

iface_data :

GTypeClassCacheFunc ()

gboolean            (*GTypeClassCacheFunc)              (gpointer cache_data,
                                                         GTypeClass *g_class);

cache_data :

g_class :

Возвращает :

enum GTypeFlags

typedef enum    /*< skip >*/
{
  G_TYPE_FLAG_ABSTRACT		= (1 << 4),
  G_TYPE_FLAG_VALUE_ABSTRACT	= (1 << 5)
} GTypeFlags;

Битовая маска для контроля характеристик типа.

G_TYPE_FLAG_ABSTRACT

Указывает абстрактный тип. Экземпляры не могут быть созданы для абстрактного типа.

G_TYPE_FLAG_VALUE_ABSTRACT

enum GTypeFundamentalFlags

typedef enum    /*< skip >*/
{
  G_TYPE_FLAG_CLASSED           = (1 << 0),
  G_TYPE_FLAG_INSTANTIATABLE    = (1 << 1),
  G_TYPE_FLAG_DERIVABLE         = (1 << 2),
  G_TYPE_FLAG_DEEP_DERIVABLE    = (1 << 3)
} GTypeFundamentalFlags;

Битовая маска используемая для контроля специфичных характеристик базового типа.

G_TYPE_FLAG_CLASSED

Указывает классифицированный тип.

G_TYPE_FLAG_INSTANTIATABLE

Указывает инстанциируемый тип (подразумевает классифицируемый).

G_TYPE_FLAG_DERIVABLE

Указывает простой наследуемыйй тип.

G_TYPE_FLAG_DEEP_DERIVABLE

Указывает глубину наследуемого типа (включая производный).

g_type_register_static ()

GType               g_type_register_static              (GType parent_type,
                                                         const gchar *type_name,
                                                         const GTypeInfo *info,
                                                         GTypeFlags flags);

parent_type :

Предок производного типа.

type_name :

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

info :

flags :

Возвращает :

Новый идентификатор типа.

g_type_register_static_simple ()

GType               g_type_register_static_simple       (GType parent_type,
                                                         const gchar *type_name,
                                                         guint class_size,
                                                         GClassInitFunc class_init,
                                                         guint instance_size,
                                                         GInstanceInitFunc instance_init,
                                                         GTypeFlags flags);

parent_type :

Тип который является предком производного типа.

type_name :

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

class_size :

class_init :

instance_size :

instance_init :

flags :

Возвращает :

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

Начиная с версии 2.12

g_type_register_dynamic ()

GType               g_type_register_dynamic             (GType parent_type,
                                                         const gchar *type_name,
                                                         GTypePlugin *plugin,
                                                         GTypeFlags flags);

parent_type :

Предок данного типа.

type_name :

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

plugin :

flags :

Возвращает :

g_type_register_fundamental ()

GType               g_type_register_fundamental         (GType type_id,
                                                         const gchar *type_name,
                                                         const GTypeInfo *info,
                                                         const GTypeFundamentalInfo *finfo,
                                                         GTypeFlags flags);

type_id :

Предопределённое значение GTypeFundamentals.

type_name :

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

info :

finfo :

flags :

Возвращает :

Предопределённый идентификатор типа.

g_type_add_interface_static ()

void                g_type_add_interface_static         (GType instance_type,
                                                         GType interface_type,
                                                         const GInterfaceInfo *info);

Добавляет статический interface_type к instantiable_type. Информация содержащаяся в структуре GTypeInterfaceInfo указанная параметром info используется для управления связью.

instance_type :

interface_type :

info :

g_type_add_interface_dynamic ()

void                g_type_add_interface_dynamic        (GType instance_type,
                                                         GType interface_type,
                                                         GTypePlugin *plugin);

instance_type :

interface_type :

plugin :

g_type_interface_add_prerequisite ()

void                g_type_interface_add_prerequisite   (GType interface_type,
                                                         GType prerequisite_type);

Добавляет prerequisite_type в список предпосылок interface_type. Это значит что любая реализация типа interface_type должна так же реализовать prerequisite_type. Предпосылки могут рассматриваться как альтернатива интерфейсного ответвления (которые не поддерживает GType). Интерфейс может иметь один инстанциируемый тип предпосылки.

interface_type :

prerequisite_type :

g_type_get_plugin ()

GTypePlugin*        g_type_get_plugin                   (GType type);

type :

Возвращает :

g_type_interface_get_plugin ()

GTypePlugin*        g_type_interface_get_plugin         (GType instance_type,
                                                         GType interface_type);

instance_type :

interface_type :

Возвращает :

g_type_fundamental_next ()

GType               g_type_fundamental_next             (void);

Возвращает :

Следующий за последним ID зарегистрированного базового типа, или 0 если система типов исчерпала идентификаторы базовых типов.

g_type_fundamental ()

GType               g_type_fundamental                  (GType type_id);

type_id :

допустимый ID типа

Возвращает :

ID базового типа

g_type_create_instance ()

GTypeInstance*      g_type_create_instance              (GType type);

type :

Инстанциируемый тип для создания экземпляра.

Возвращает :

Распределённый и инициализированный экземпляр, подвергается дальнейшей обработке реализацией базового типа.

g_type_free_instance ()

void                g_type_free_instance                (GTypeInstance *instance);

Освобождает экземпляр типа, возвращает его в пул экземпляров типа, если он есть.

instance :

экземпляр типа.

g_type_add_class_cache_func ()

void                g_type_add_class_cache_func         (gpointer cache_data,
                                                         GTypeClassCacheFunc cache_func);

cache_data :

данные помещаемые в cache_func

cache_func :

g_type_remove_class_cache_func ()

void                g_type_remove_class_cache_func      (gpointer cache_data,
                                                         GTypeClassCacheFunc cache_func);

cache_data :

данные полученные при добавлении cache_func

cache_func :

g_type_class_unref_uncached ()

void                g_type_class_unref_uncached         (gpointer g_class);

g_class :

g_type_add_interface_check ()

void                g_type_add_interface_check          (gpointer check_data,
                                                         GTypeInterfaceCheckFunc check_func);

check_data :

данные помещаемые в check_func

check_func :

функция вызываемая после каждой инициализации интерфейса.

Начиная с версии 2.4

g_type_remove_interface_check ()

void                g_type_remove_interface_check       (gpointer check_data,
                                                         GTypeInterfaceCheckFunc check_func);

check_data :

check_func :

Начиная с версии 2.4

GTypeInterfaceCheckFunc ()

void                (*GTypeInterfaceCheckFunc)          (gpointer check_data,
                                                         gpointer g_iface);

check_data :

g_iface :

инициализируемый интерфейс

Начиная с версии 2.4

g_type_value_table_peek ()

GTypeValueTable*    g_type_value_table_peek             (GType type);

type :

Возвращает :

G_DEFINE_TYPE()

#define G_DEFINE_TYPE(TN, t_n, T_P)			    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})

TN :

Имя нового типа, в верхнем регистре.

t_n :

Имя нового типа, в нижнем регистре, со словами разделёнными символом '_'.

T_P :

Начиная с версии 2.4

G_DEFINE_TYPE_WITH_CODE()

#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()

TN :

имя нового типа в верхнем регистре (in Camel case).

t_n :

имя нового типа в нижнем регистре, со словами разделёнными знаком '_'.

T_P :

_C_ :

Произвольный код который вставляется в функцию *_get_type().

Начиная с версии 2.4

G_DEFINE_ABSTRACT_TYPE()

#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P)		    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})

TN :

имя нового типа в верхнем регистре (in Camel case).

t_n :

имя нового типа в нижнем регистре, со словами разделёнными знаком '_'.

T_P :

Начиная с версии 2.4

G_DEFINE_ABSTRACT_TYPE_WITH_CODE()

#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()

TN :

имя нового типа, в верхнем регистре (in Camel case).

t_n :

имя нового типа в нижнем регистре, со словами разделёнными символом '_'.

T_P :

_C_ :

Произвольный код вставляемый в функцию @type_name_get_type().

Начиная с версии 2.4

G_IMPLEMENT_INTERFACE()

#define             G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)

Помните что этот макрос может использоваться только вместе с G_DEFINE_TYPE_* макросами, так как он зависит от переменных имён из этих макросов.

TYPE_IFACE :

iface_init :

Функция инициализации интерфейса

Начиная с версии 2.4

G_DEFINE_TYPE_EXTENDED()

#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
G_DEFINE_TYPE_EXTENDED (GtkGadget, 
                        gtk_gadget, 
                        GTK_TYPE_WIDGET,
                        0, 
                        G_IMPLEMENT_INTERFACE (TYPE_GIZMO, 
                                               gtk_gadget_gizmo_init));

разворачивается до

static void     gtk_gadget_init       (GtkGadget      *self);
static void     gtk_gadget_class_init (GtkGadgetClass *klass);
static gpointer gtk_gadget_parent_class = NULL;
static void     gtk_gadget_class_intern_init (gpointer klass)
{
  gtk_gadget_parent_class = g_type_class_peek_parent (klass);
  gtk_gadget_class_init ((GtkGadgetClass*) klass);
}

GType
gtk_gadget_get_type (void)
{
  static GType g_define_type_id = 0; 
  if (G_UNLIKELY (g_define_type_id == 0)) 
    { 
      static const GTypeInfo g_define_type_info = { 
        sizeof (GtkGadgetClass), 
        (GBaseInitFunc) NULL, 
        (GBaseFinalizeFunc) NULL, 
        (GClassInitFunc) gtk_gadget_class_intern_init, 
        (GClassFinalizeFunc) NULL, 
        NULL,   /* class_data */ 
        sizeof (GtkGadget), 
        0,      /* n_preallocs */ 
        (GInstanceInitFunc) gtk_gadget_init, 
      }; 
      g_define_type_id = g_type_register_static (GTK_TYPE_WIDGET, "GtkGadget", &g_define_type_info, 0); 
      {
        static const GInterfaceInfo g_implement_interface_info = {
          (GInterfaceInitFunc) gtk_gadget_gizmo_init
        };
        g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
      } 
    } 
  return g_define_type_id; 
}

Единственные части определяемые вручную это сструктуры интерфейса и класса и определение функций инициализации экземпляра и класса.

TN :

t_n :

T_P :

_f_ :

_C_ :

Начиная с версии 2.4

G_TYPE_INVALID

#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)

G_TYPE_NONE

#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)

Базовый тип который используется как замена для возвращаемого типа C void.

G_TYPE_INTERFACE

#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)

Базовый тип из который наследуют все интерфейсы.

G_TYPE_CHAR

#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)

G_TYPE_UCHAR

#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)

G_TYPE_BOOLEAN

#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)

G_TYPE_INT

#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)

G_TYPE_UINT

#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)

G_TYPE_LONG

#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)

G_TYPE_ULONG

#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)

G_TYPE_INT64

#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)

G_TYPE_UINT64

#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)

G_TYPE_ENUM

#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)

Базовый тип который наследуют все перечислимые типы.

G_TYPE_FLAGS

#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)

Базовый тип который наследуют все флаговые типы.

G_TYPE_FLOAT

#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)

G_TYPE_DOUBLE

#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)

G_TYPE_STRING

#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)

Базовый тип соответствующий nul-завершённой C строке.

G_TYPE_POINTER

#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)

G_TYPE_BOXED

#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)

Базовый тип который наследуют все boxed типы.

G_TYPE_PARAM

#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)

G_TYPE_OBJECT

#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)

G_TYPE_GTYPE

#define	G_TYPE_GTYPE			 (g_gtype_get_type())

G_TYPE_RESERVED_GLIB_FIRST

#define G_TYPE_RESERVED_GLIB_FIRST	(21)

G_TYPE_RESERVED_GLIB_LAST

#define G_TYPE_RESERVED_GLIB_LAST	(31)

Последний номер базового типа зарезервированный для GLib.

G_TYPE_RESERVED_BSE_FIRST

#define G_TYPE_RESERVED_BSE_FIRST	(32)

G_TYPE_RESERVED_BSE_LAST

#define G_TYPE_RESERVED_BSE_LAST	(48)

Последний номер базового типа зарезервированный для BSE.

G_TYPE_RESERVED_USER_FIRST

#define G_TYPE_RESERVED_USER_FIRST	(49)
PreviousСигналыNextGTypePlugin

Last updated 4 years ago

Was this helpful?

GType API является основой системы GObject. Он обеспечивает средства для регистрации и управления всеми базовыми типами данных, определённых пользователем объектов и типами интерфейсов. Перед использованием любых функций GType или GObject, должна быть вызвана для инициализации системы типов.

Для создания типа и регистрационных целей, все типы относятся к одной из двух категорий: статические или динамические. Статические типы никогда не загружаются и не выгружаются во время выполнения, как это могут делать динамические типы. Статические типы создаются с помощью которая получает определённую информацию помещаемую в неё через структуру . Динамические типы создаются с помощью которая принимает вместо сструктуры . Оставшаяся информация типа ( структура) находится во время выполнения через и g_type_plugin_*() API. Эти регистрационные функции полезно вызывать только однажды из функции целью которой является возврат идентификатора типа для определённого класса. Как только тип (либо класс или интерфейс) зарегистрирован, он может быть инстанциирован, унаследован, или реализован в зависимости от того, что это за тип. Есть также третья регистрационная функция для регистрации базовых типов которая требует и структуру и структуру , но она редко используется, так как большинство базовых типов является предопределёнными и не определяются пользователем.

значение.

Возвращает ID для базового типа с номером x. Используйте вместо этого макроса для создания нового базового типа.

Возвращает если type является абстрактным. Абстрактный тип может не инициироваться и используется обычно как абстрактный основной класс для наследования классов.

значение .

Возвращает если type унаследован из другого типа (возвращает TRUE для всех не базовых типов).

значение .

Возвращает если type является базовым типом.

значение .

Возвращает если type является типовым значением и может использоваться с помощью .

значение .

Возвращает если type имеет .

значение .

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

значение .

Возвращает если type может быть инстанциирован. Инстанциация - это процесс создания экземпляра объекта данного типа.

значение .

Возвращает если type является наследником. Наследуемый тип может использоваться как основной класс плоской (одноуровневой) иерархии класса.

значение .

Возвращает если type глубоко наследуемыйй тип. Глубоко наследуемыйй тип может использоваться как основной класс глубокой (многоуровневой) иерархии класса.

значение .

Возвращает если type является интерфейсным типом. Интерфейсные типы обеспечивают чистый API, реализация которого обеспечивается другим типом (который, как говорится в таких случаях, соответствует интерфейсу). GLib интерфейсы являются в некотором роде аналогами интерфейсов Java и C++ классов содержащие только чистые виртуальные функции, различие в том, что GType интерфейсы не наследуемый (но можно посмотреть альтернативу ).

значение .

Эта структура используется для обеспечения системы типов информацией запрашиваемой для инициализации и уничтожения (финализации) типового класса и его экземпляра. Инициализированная структура помещается в функцию (или копируется в структуру обеспеченную функцией). Система типов выполнит глубокую копию этой сструктуры, поэтому память не должна быть постоянной через вызов.

class_size;

base_init;

base_finalize;

class_init;

class_finalize;

class_data;

instance_size;

n_preallocs;

До GLib 2.10, представлял количество предварительно распределённых (кэшированных) экземпляров для резервирования памяти (0 указывает на отсутствие кэша). Начиная с версии GLib 2.10, игнорируется, так как теперь экземпляры распределяются с помощью .

instance_init;

const *value_table;

Табличная функция для основной обработки GValues этого типа (обычно полезна только для базовых типов).

type_flags;

описывает характеристики базового типа

interface_init;

interface_finalize;

interface_data;

обеспечивает функции требуемые реализацией , которая служит контейнером для значений типа.

По умолчанию инициализирует содержимое values записывая значения непосредственно в массив value->data. Массив данных помещённый в эту функцию будет заполнен нулями с помощью memset(), поэтому не нужно беспокоится об освобождении предыдущего содержимого. Например реализация строкового значения которое могло бы быть не , может выглядеть так:

Освобождает любое предыдущее содержимое массива данных помещённого в value. Ресурсы распределённые для содержимого после вызова этой функции освобождаются. На примере нашей строки выше:

dest_value это с разделом данных заполненным нулями, а src_value надлежащим образом установленная того же или производного типа. Цель функции заключается в копировании содержимого src_value в dest_value, то есть даже после освобождения src_value, содержимое dest_value останется доступным. Типовой пример строки:

*collect_format;

функция collect_value() отвечает за преобразование накопленных значений из списка переменных параметров в содержимое подходящее для хранения в GValue. Эта функция должна установить value подобно value_init(); например для строкового значения которое не допускает указателей, она должна либо вернуть ошибку, либо выполнить неявное преобразование сохранив пустую строку. value помещённый в эту функцию является нулевым массивом данных, таким образом точно так же как для value_init() гарантирует отсутствие предыдущего содержимого которое нужно освобождать. n_collect_values точная длина строкиcollect_format, а collect_values массив объединений с длиной n_collect_values, содержащий накопленные значения согласноcollect_format. collect_flags - является параметром обеспечивающим подсказку для вызывающей программы. Он может содержать флаг G_VALUE_NOCOPY_CONTENTS указывающий, что накопленное значение содержимого можно рассматривать как "static" в течение жизненного цикла value. Поэтому дополнительная копия содержимого сохранённого в collect_values не требуется для назначения value. Наш пример строки выше, мы продолжим следующим:

Подсчёт ссылок для допустимых объектов всегда увеличивается, независимо от collect_flags. Для недопустимых объектов, пример возвращает вновь распределённую строку без изменения value. После успешного выполнения, collect_value() должен вернуть . Однако если произошла ошибка, collect_value() может выдать ошибку возвращая вновь распределённую не- строку, дав подходящее описание произошедшей ошибки. Вызываемый код не пытается определить допустимость содержимого value при возвращении ошибки, value просто выбрасывается без дальнейшего освобождения. Так же, это хороший метод не распределять содержимое , до возвращения ошибки, однако, collect_values() не обязана возвращать правильно установленное value для возврата ошибки, просто потому что любое не- возвращение рассматривается как фатальное условие поэтому дальнейшее поведение программы не определено.

*lcopy_format;

Расположение допустимой сструктуры .

Расположение допустимой сструктуры .

Расположение допустимой сструктуры .

Помните что в течение вызова , указатель класса изменяется, поэтому может не всегда возвращаться ожидаемый указатель.

Расположение сструктуры .

Расположение сструктуры .

Выдаёт закрытую структуру для определённого типа. Закрытая структура должна быть зарегистрирована в функции class_init с помощью .

Возвращает если instance является допустимой структурой , иначе издаёт предупреждение и возвращает .

Расположение сструктуры .

Расположение сструктуры .

Возвращает если instance является экземпляром типа идентифицируемым g_type. Иначе издаёт предупреждение и возвращает .

Расположение сструктуры .

Расположение сструктуры .

Возвращает если g_class является классовой структурой типа идентифицируемого с помощью g_type. Иначе издаёт предупреждение и возвращает .

Расположение сструктуры .

Возвращает если value инициализировано типовым значением.

Возвращает если value инициализировано значением типа g_type.

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

Перечисление значений GTypeDebugFlags может помещаться в для переключения отладочных сообщений в процессе выполнения. Помните что сообщения могут также переключаться с помощью установки переменной окружения GOBJECT_DEBUG в список разделённых между собой символом ':' "objects" и "signals".

Подобна , но дополнительно устанавливает отладочные флаги.

Поразрядная комбинация значений для отладки.

Статичное имя типа или .

значение .

если type содержит is_a_type.

Структуру для полученного типового ID.

Эта функция такая же как , только количество ссылок уменьшается. Как следствие, эта функция может вернуть если помещённый в неё классовый тип в данный момент не существует (не имеет ссылок).

Структура для полученного типового ID или если класс в данный момент не существует.

Более эффективная версия которая работает только для статических типов.

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

Уменьшает количество ссылок помещённой сструктуры класса. Как только последняя ссылка была освобождена, класс может финализироваться системой типов, поэтому дальнейшее разыменование указателя класса после невозможно.

Структура для сброса ссылки.

Структура для определения родительского класса.

Регистрирует закрытую структуру для инстанциируемого типа; когда объект распределён, закрытая структура типа и все родительские типы распределяются последовательно в тот же блок памяти что и общие сструктуры. Эта функция должна вызываться в типовой функции . Закрытая структура может быть найдена используя макрос. В следующем примере показано прикрепление закрытой сструктуры MyObjectPrivate к объекту MyObject определённому в стандартном стиле GObject.

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

Структура .

Структуру GTypeInterface интерфейса iface_type если реализован с помощью instance_class, иначе .

Возвращает структуру соответствующего родительского типа типового экземпляра которому принадлежит g_iface. Это полезно когда наследуется реализация интерфейса из родительского типа и возможно отменяются некоторые методы.

Структура .

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

Если тип в текущий момент не используется, то значение по умолчанию vtable для типа будет создано и инициализировано вызовом инициализации основного типа и функций инициализации значения по умолчанию vtable для типа (@base_init и class_init члены ). Вызов полезен когда вам нужно убедиться что сигналы и свойства для интерфейса были установлены.

значение по умолчанию vtable для интерфейса; вызовите после использования интерфейса.

значение по умолчанию vtable для интерфейса, или если тип в текущий момент не используется.

Уменьшает количество ссылок для типа соответствующего значению по умолчанию vtable интерфейса g_iface. Если тип динамический, то когда ни кто не использует интерфейс и все ссылки сброшены, будет вызвана функция финализации для значения по умолчанию vtable интерфейса (class_finalize член ).

значение по умолчанию сструктуры vtable для интерфейса, которую возвращает

Возвращает вновь распределенный и 0-завершённый массив типа ID, записывая в список дочерние типы type. Возвращаемое значение должно быть освобождено с помощью после использования.

Опционально указатель на содержащий количество дочерних типов.

Возвращает вновь распределённый и 0-завершённый массив типа ID, записывая в список интерфейсные типы которым соответствует этот type. Возвращаемое значение должно быть освобождено с помощью после использования.

Опционально указатель содержащий количество интерфейсных типов.

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

вновь распределённый 0-завершённый массив содержащий предпосылки interface_type

для идентификации данных

Возвращает данные предварительно прикреплённые к type с помощью .

для идентификации данных

данные, или если данные не найдены

Запрашивает у системы типов информацию об определённом типе. Эта функция заполняет определённую пользователем структуру типовой информацией. Если помещен неверный , type член равен 0. Все члены заполненные в структуре должны рассматриваться как константы и не должны изменяться.

значение статичного, классифицированного типа.

Структура содержащая информацию для определённого типа. Она заполняется функцией .

type;

значение типа.

const * type_name;

class_size;

instance_size;

Это callback-функция используемая системой типов для основной инициализации классовых структур производных типов. Она вызывается как часть процесса инициализации всех производных классов и должна перераспределить или сбросить все динамические члены класса скопированные из родительского класса. Например, члены класса (такие как строки) которые не достаточно обработать простым копированием памяти родительского класса в производный класс, должны быть изменены. Смотрите для обсуждения процесса инициализации классов.

Структура для инициализации.

Это callback-функция используемая системой типов для финализации тех частей сструктуры класса производного типа которые были установлены из соответствующей функции. Финализация класса в основном работает в обратном порядке относительно процесса инициализации класса. Смотрите для обсуждения процесса инициализации класса.

Структура для финализации.

3 - Запрос инициализируя весь родительский тип и классовый тип.

4 - Запрос инициализатора класса .

Так как производные классы частично инициализируются через копирование памяти родительского класса, основное правило в том, что и должны заботится о необходимой переинициализации и высвобождении тех членов класса которые были введены типом определившим эти /. должна заботиться только об инициализации статичных членов класса, в то время как динамические члены класса (такие как распределённые строки или ресурсы подсчёта ссылок) лучше обрабатывать с помощью для данного типа, таким образом надлежащая инициализация динамических членов класса также выполняется для инициализации классов производных типов. Пример может помочь понять предназначение разных инициализаторов класса:

Инициализация TypeBClass сначала вызовет инициализацию TypeAClass (производные классы ссылаются на их родительские классы, смотрите ). Инициализация TypeAClass инициализирует нулями свои поля, зтем вызовет свою type_a_base_class_init() для распределения своих динамических членов (dynamic_string), и наконец вызовет свою type_a_class_init() для инициализации статических членов (static_integer). Первым шагом в процессе инициализации TypeBClass является прямое копирование памяти содержащей TypeAClass в TypeBClass и инициализация нулями оставшихся полей в TypeBClass. Динамические члены TypeAClass внутри TypeBClass теперь необходимо переинициализировать выполнив вызов type_a_base_class_init() с параметром TypeBClass. После из TypeBClass, вызывается type_b_base_class_init() для распределения динамических членов TypeBClass (dynamic_gstring), и наконец из TypeBClass, вызывается type_b_class_init() для завершения процесса инициализации со статическими членами (static_float). Соответствующее количество частей финализации для функций обеспечивают освобождение распределённых ресурсов во время финализации класса.

Структура для инициализации.

Член class_data поставляемый через структуру .

Это callback-функция используемая системой типов для финализации класса. Она редко нужна, так как динамически распределяемые ресурсы классов должны обрабатываться с помощью и . Кроме того, спецификация в структуре статических типов недоступна, потому что классы статических типов никогда не финализируются (они искусственно поддерживаются когда количество их ссылок достигает нуля).

Структура для финализации.

Член class_data поставляемый через структуру .

class_data поставляемый через структуру .

Это callback-функция используемая системой типов для финализации интерфейса. Эта функция должна уничтожать любые внутренние данные и освобождать любые ресурсы распределённые соответствующей функцией .

class_data поставляемый через структуру .

Эта callback-функция вызывается когда количество ссылок класса сбрасывается к нулю. Она может использовать чтобы предотвратить освобождение класса. Вы не должны вызывать из функции чтобы не допустить бесконечную рекурсию, используйте вместо неё.

Функции должны проверять id класса является ли он фактически кэшируеммым классом данного типа, так как все классы проходят через туже цепочку .

данные помещаемые в вызов

Структура на которую нет ссылок

для прекращения последующих вызовов , для продолжения.

Указывает значение абстрактного типа, то есть тип который введён в таблицу значений, но не может использоваться для .

Регистрирует type_name как имя нового статичного типа унаследовавшего parent_type. Система типов использует информацию содержащуюся в структуре указанной параметром info для управления типом и его экземплярами (если не абстрактный). Значение flags определяет природу типа (например абстрактный или нет).

Структура для данного типа.

Побитная комбинация значений .

Регистрирует type_name как имя нового статичного типа унаследовавшего parent_type. Значение flags определяет природу типа (например абстрактный или нет). Она заполняет структуру и вызывает .

Размер сструктуры класса (смотрите )

Расположение функции инициализации класса (смотрите )

Размер сструктуры экземпляра (смотрите )

Расположение функции инициализации экземпляра (смотрите )

Побитная комбинация значений .

Регистрирует type_name как имя нового динамического типа унаследовавшего parent_type. Система типов использует информацию содержащуюся в структуре указанной параметром plugin для управления типом и его экземпляром (если не абстрактный). Значение flags определяет природу типа (например абстрактный или нет).

Структура в которой находится .

Побитовая комбинация значений .

Идентификатор нового типа или если регистрация не удалась.

Регистрирует type_id как предопределённый идентификатор, а type_name как имя базового типа. Система типов использует информацию содержащуюся в структуре указанной параметром info и в структуре указанной параметром finfo для управления экземпляром типа. Значение flags определяет дополнительные характеристики базового типа.

Структура данного типа.

Структура для данного типа.

Побитная комбинация значений .

Значение инстанциируемого типа.

значение интерфейсного типа.

Структура для данной комбинации (instance_type, interface_type).

Добавляет динамический interface_type к instantiable_type. Информация содержащаяся в структуре указанной параметром plugin используется для управления связью.

значение инстанциируемого типа.

значение интерфейсного типа.

структура находящаяся в .

значение интерфейсного типа.

значение интерфейсного инстанциируемого типа.

Возвращает структуру для type или если type не имеет структуру .

для поиска модуля (plugin).

Соответствующий модуль если type является динамическим типом, иначе .

Возвращает структуру для динамического интерфейса interface_type который был добавлен к instance_type, или если interface_type не добавлен к instance_type или если не имеет структуру. Смотрите .

значение инстанциируемого типа.

значение интерфейсного типа.

для динамического интерфейса interface_type принадлежащего instance_type.

Возвращает следующий свободный идентификатор базового типа который можно использовать для регистрации нового базового типа с помощью . Возвращаемый ID типа представляет наивысший регистрируемый идентификатор базового типа.

Внутренняя функция, используется для извлечения части ID базового типа. вместо неё используйте .

Создаёт инициализированный экземпляр type если type является допустимым и может быть инстанциирован. Система типов выполняет только основное распределение и установку сструктуры для экземпляра: фактически экземпляр создаётся функциями поставляемыми реализацией базового типа. Поэтому использование зарезервировано только для реализации базового типа. Например экземпляры иерархии должны создаваться через и никогда не должны создаваться непосредственно через которая не обрабатывает такие вещи как единственный ребёнок объекта или конструкцию объекта. Помните: Не используйте эту функцию, кроме как для реализации базового типа. Также языковые привязки не должны использовать эту функцию, а использовать вместо неё .

Как , эта функция зарезервирована для реализаций базовых типов.

Добавляет которая будет вызвана перед сбросом количества ссылок класса в ноль. Это может использоваться для предотвращения преждевременного разрушения класса. Все установленные функции будут скованы пока одна из них не вернёт . Функции должны контролировать помещаемый id класс, должна ли она фактически кэшировать класс этого типа, так как все классы направляются через туже цепочку .

Удаляет предварительно установленную . Кэш содержащийся в cache_func должен быть пустым когда вызывается чтобы избежать утечек.

Вариант для использования в реализации. Она отменяет ссылку на класс без контроля цепочки , избегая рекурсии которая моглабы иначе произойти.

Структура для отмены ссылок.

Добавляет функцию вызываемую после инициализации vtable интерфейса для любого класса (то есть после вызова interface_init члена ).

Эта функция полезна когда вам нужно контролировать логическое выражение зависящее от интерфейсного класса. Например, реализация использует это средство для контроля реализации объектом всех свойств которые определены его интерфейсом.

Удаляет интерфейсную функцию контроля добавленную с помощью .

данные callback-функции помещаемые в

callback-функция помещаемая в

Эта callback-функция вызывается после инициализации vtable интерфейса. Смотрите .

данные помещаемые в .

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

значение.

Расположение связанной с type или если нет связанной с type.

Удобный макрос для реализации типа, который декларирует функцию инициализации класса, функцию инициализации экземпляра (смотрите для информации об этом) и статическую переменную с именем t_n_parent_class указывающую на родительский класс. Кроме того, он определяет функцию *_get_type(). Смотрите для примера.

родительского типа.

Удобный макрос для реализации типа. Похож на , но позволяет вставить произвольный код в функцию *_get_type(), например реализовать интерфейс через . Смотрите для примера.

родительского типа.

Удобный макрос для реализации типа. Похож на , но определяет абстрактный тип. Смотрите для примера.

родительского типа.

Удобный макрос для реализации типа. Похож на , определяет абстрактный тип и позволяет вставить произвольный код в функцию *_get_type(), например реализовать интерфейс через . Смотрите для примера.

родительского типа.

Удобный макрос для простого добавления интерфейса в _C_ раздел или . Смотрите для примера.

добавляемого интерфейса

Основной макрос для удобной реализации типа, на котором основан , и так далее.

Недопустимый используется как ошибочное значение которое возвращают некоторые функции возвращающие .

Базовый тип соответствующий . Тип подписываемый с помощью G_TYPE_CHAR беззаговорочно 8-битное целочисленное со знаком. Это может быть или не может быть тем же C типом "gchar".

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип соответствующий .

Базовый тип который наследуют все типы.

Базовый тип для .

Тип для .

Первый номер базового типа для создания идентификатора базового типа с помощью зарезервированный для GLib.

Первый номер базового типа для создания идентификатора базового типа с помощью зарезервированный для BSE.

Первый доступный номер базового типа для создания нового идентификатора базового типа с помощью .

g_type_init()
g_type_register_static()
GTypeInfo
g_type_register_dynamic()
GTypePlugin
GTypeInfo
GTypePlugin
g_type_register_fundamental()
GTypeInfo
GTypeFundamentalInfo
g_type_fundamental_next()
TRUE
TRUE
TRUE
TRUE
g_value_init()
TRUE
GTypeValueTable
TRUE
TRUE
TRUE
TRUE
TRUE
g_type_interface_add_prerequisite()
g_type_register_static()
GTypeInfo
g_type_plugin_complete_type_info()
g_type_register_static()
GTypeValueTable
GValue
GInstanceInitFunc()
g_type_class_add_private()
TRUE
GTypeInstance
FALSE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
g_type_init()
g_type_init_with_debug_flags()
g_type_init()
g_type_class_ref()
NULL
g_type_class_peek()
g_type_class_unref()
class_init()
G_TYPE_INSTANCE_GET_PRIVATE()
GTypeInterface
GTypeInterface
GTypeInfo
g_type_default_interface_ref()
GTypeInfo
g_free()
g_free()
g_type_set_qdata()
GType
GTypeQuery
GTypeQuery
g_type_query()
GClassInitFunc()
GBaseInitFunc()
GClassInitFunc()
GBaseInitFunc()
GBaseFinalizeFunc()
GBaseInitFunc()
GBaseFinalizeFunc()
GClassInitFunc()
GBaseInitFunc()
g_type_class_ref()
GBaseInitFunc()
GClassInitFunc()
GBaseInitFunc()
GClassInitFunc()
GBaseInitFunc()
GBaseInitFunc()
GBaseFinalizeFunc()
GClassFinalizeFunc()
GTypeInfo
GInterfaceInitFunc()
g_type_class_ref()
g_type_class_unref()
GTypeClassCacheFunc
g_type_class_unref_uncached()
GTypeClassCacheFunc
GTypeInfo
GTypeInfo
g_type_register_static()
GTypePlugin
GTypeInfo
GTypeFundamentalInfo
GTypePlugin
GTypePlugin
NULL
GTypePlugin
GTypePlugin
NULL
GTypePlugin
g_type_add_interface_dynamic()
g_type_register_fundamental()
G_TYPE_FUNDAMENTAL()
g_type_create_instance()
GObject
g_object_new()
g_type_create_instance()
g_object_new()
g_type_create_instance()
GTypeClassCacheFunc
GTypeClassCacheFunc
TRUE
GTypeClassCacheFunc
GTypeClassCacheFunc
g_type_remove_class_cache_func()
g_type_class_unref()
GTypeClassCacheFunc
GTypeClassCacheFunc
GInterfaceInfo
GObject
g_type_add_interface_check()
g_type_add_interface_check()
GTypeValueTable
GTypeInfo
G_DEFINE_TYPE_EXTENDED()
G_DEFINE_TYPE()
G_IMPLEMENT_INTERFACE()
G_DEFINE_TYPE_EXTENDED()
G_DEFINE_TYPE()
G_DEFINE_TYPE_EXTENDED()
G_DEFINE_TYPE_WITH_CODE()
G_IMPLEMENT_INTERFACE()
G_DEFINE_TYPE_EXTENDED()
G_DEFINE_TYPE_WITH_CODE()
G_DEFINE_ABSTRACT_TYPE_WITH_CODE()
G_DEFINE_TYPE_EXTENDED()
G_DEFINE_TYPE()
GType
GType
gchar
guchar
gboolean
gint
guint
glong
gulong
gint64
guint64
gfloat
gdouble
gpointer
GParamSpec
GObject
GType
G_TYPE_MAKE_FUNDAMENTAL()
G_TYPE_MAKE_FUNDAMENTAL()
G_TYPE_MAKE_FUNDAMENTAL()
GType
GType
GType
GType
GType
GType
GType
GType
GType
GType
GType
guint16
GBaseInitFunc
GBaseFinalizeFunc
GClassInitFunc
GClassFinalizeFunc
gconstpointer
guint16
guint16
slice allocator
GInstanceInitFunc
GTypeValueTable
GTypeValueTable
GTypeFundamentalFlags
GTypeFundamentalFlags
GInterfaceInitFunc
GInterfaceFinalizeFunc
gpointer
GValue
NULL
GValue
GValue
GValue
gchar
NULL
GTypeCValue
NULL
NULL
GValue
NULL
gchar
GTypeInstance
GTypeClass
GTypeInterface
GTypeInstance
GTypeInstance
GTypeInstance
GTypeInstance
GTypeInstance
GTypeClass
GTypeClass
GValue
GValue
GTypeDebugFlags
NULL
GType
TRUE
GTypeClass
GTypeClass
NULL
GTypeClass
NULL
GTypeClass
GTypeClass
GTypeClass
NULL
GTypeInterface
GTypeInterface
NULL
g_type_default_interface_unref()
NULL
g_type_default_interface_ref()
guint
guint
NULL
GType
GType
GQuark
GType
GQuark
NULL
GType
GType
GType
gchar
guint
guint
GTypeClass
GTypeClass
GBaseInitFunc()
GClassInitFunc()
GTypeClass
GTypeInfo
GTypeClass
GTypeInfo
GTypeInfo
GTypeInfo
g_type_add_class_cache_func()
GTypeClass
TRUE
GTypeClassCacheFunc
FALSE
g_value_init()
GTypeInfo
GTypeFlags
GTypeInfo
GTypeInfo
GTypeInfo
GTypeInfo
GTypeFlags
GTypePlugin
GTypeInfo
GTypeFlags
G_TYPE_INVALID
GTypeInfo
GTypeFundamentalInfo
GTypeFlags
GType
GType
GInterfaceInfo
GType
GType
GTypePlugin
GInterfaceInfo
GType
GType
GType
NULL
GType
GType
GTypePlugin
GTypeClassCacheFunc
GTypeClassCacheFunc
GTypeClass
g_type_add_interface_check()
g_type_add_interface_check()
g_type_add_interface_check()
GType
GTypeValueTable
NULL
GTypeValueTable
GType
GType
GType
GType
GType