GType
GType — GLib окружение идентификации типов и система управления
Краткое описание
Описание
В заключительном слове об именах типов. Такой идентификатор должен быть по крайней мере длиной из трёх символов. Максимального предела длины не существует. Первый символ должен быть буквой (a-z или A-Z) или символом подчёркивания '_'. Последующие символы могут быть буквами, цифрами или одним из символов '-_+'.
Детали
GType
Числовое значение которое представляет уникальный идентификатор зарегистрированного типа.
G_TYPE_FUNDAMENTAL()
Возвращает базовый тип который наследует type
. Базовые типы являются типами которые служат основой для производных типов, таким образом они являются корнями отдельных иерархий наследования.
type
:
G_TYPE_FUNDAMENTAL_MAX
Целочисленная константа представляющая количество идентификаторов, зарезервированных для типов обозначенных во время компиляции.
G_TYPE_MAKE_FUNDAMENTAL()
x
:
номер базового типа.
G_TYPE_IS_ABSTRACT()
type
:
G_TYPE_IS_DERIVED()
type
:
G_TYPE_IS_FUNDAMENTAL()
type
:
G_TYPE_IS_VALUE_TYPE()
type
:
G_TYPE_HAS_VALUE_TABLE()
type
:
G_TYPE_IS_CLASSED()
type
:
G_TYPE_IS_INSTANTIATABLE()
type
:
G_TYPE_IS_DERIVABLE()
type
:
G_TYPE_IS_DEEP_DERIVABLE()
type
:
G_TYPE_IS_INTERFACE()
type
:
GTypeInterface
Непрозрачная структура используемая как основа всех интерфейсных типов.
GTypeInstance
Непрозрачная структура используемая как основа всех инстанциируемых типов.
GTypeClass
Непрозрачная структура используемая как основа всех классов.
GTypeInfo
Размер сструктуры класса (требуется для интерфейсных, классифицированных и инстанцируемых типов).
Расположение основной инициализирующей функции (опционально).
Расположение основной финализирующей функции (опционально).
Расположение функции инициализации класса для классов и типов. Расположение по умолчанию vtable инициализирующей функции для интерфейсных типов. (опционально) Для заполнения виртуальной функции класса используется либо эта функция либо значение по умолчанию vtable, и выполняет специфичную для типа установку такую как регистрация сигналов и свойств объекта.
Расположение функции финализации класса для классов и типов. Расположение по умолчанию в vtable функции финализации интерфейсных типов. (опционально)
Данные обеспечиваемые пользователем помещаемые в классовые функции инициализация/финализация.
Размер экземпляра (объекта) сструктуры (запрашиваемый только для инстанциирования).
Расположение функции инициализирующей экземпляр (опционально, только для инстанциируемых типов).
GTypeFundamentalInfo
Структура обеспечивающая информацией систему типов специально для управления базовыми типами.
GInterfaceInfo
Структура обеспечивает информацию для системы типов которая используется специально для управления интерфейсными типами.
расположение функции инициализации интерфейса
расположение функции финализации интерфейса
пользовательские данные для функций инициализации/финализации интерфейса
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()
Возвращает идентификатор типа из полученной сструктуры instance
.
Этот макрос должен использоваться только при реализации типа.
instance
:
G_TYPE_FROM_CLASS()
Возвращает идентификатор из полученной сструктуры class
.
Этот макрос должен использоваться только при реализации типа.
g_class
:
G_TYPE_FROM_INTERFACE()
Возвращает идентификатор из полученной сструктуры interface
.
Этот макрос должен использоваться только при реализации типа.
g_iface
:
G_TYPE_INSTANCE_GET_CLASS()
Возвращает структуру класса полученного instance
, приводя к указанному типу предка экземпляра g_type
.
Внимание
Этот макрос должен использоваться только при реализации типа.
instance
:
g_type
:
Тип возвращаемого родительского класса.
c_type
:
C тип соответствующий g_type
.
G_TYPE_INSTANCE_GET_INTERFACE()
Возвращает структуру интерфейса для интерфейса g_type
полученного instance
.
Этот макрос должен использоваться только для реализации типа.
instance
:
g_type
:
Возвращаемые интерфейсный тип.
c_type
:
C тип соответствующий g_type
.
G_TYPE_INSTANCE_GET_PRIVATE()
Этот макрос должен использоваться только при реализации типа.
instance
:
экземпляр типа наследующий private_type
.
g_type
:
идентификатор типа который определяется с помощью закрытых данных.
c_type
:
C тип для закрытой сструктуры.
Начиная с версии 2.4
G_TYPE_CHECK_INSTANCE()
Этот макрос должен использоваться только при реализации типа.
instance
:
G_TYPE_CHECK_INSTANCE_CAST()
Проверяет является ли instance
экземпляром типа идентифицируемым g_type
и издаёт предупреждение если это не так. Возвращает instance
приведённый к указателю c_type
.
Этот макрос должен использоваться только при реализации типа.
instance
:
g_type
:
возвращаемый тип.
c_type
:
C тип соответствующий g_type
.
G_TYPE_CHECK_INSTANCE_TYPE()
Этот макрос должен использоваться только при реализации типа.
instance
:
g_type
:
Проверяемый тип
G_TYPE_CHECK_CLASS_CAST()
Проверяет является ли g_class
классовой структурой типа идентифицируемого g_type
и издаёт предупреждение если это не так. Возвращает g_class
приведённый к указателю c_type
.
Этот макрос должен использоваться только при реализации типа.
g_class
:
g_type
:
Возвращаемый тип.
c_type
:
C тип соответствующий g_type
.
G_TYPE_CHECK_CLASS_TYPE()
Этот макрос должен использоваться только при реализации типа.
g_class
:
g_type
:
Проверяемый тип.
G_TYPE_CHECK_VALUE()
Этот макрос должен использоваться только при реализации типа.
value
:
G_TYPE_CHECK_VALUE_TYPE()
Этот макрос должен использоваться только при реализации типа.
value
:
g_type
:
Проверяемый тип.
G_TYPE_FLAG_RESERVED_ID_BIT
Бит в числе типа который должен быть нетронутым.
g_type_init ()
Перечисление GTypeDebugFlags
G_TYPE_DEBUG_NONE
Не печатать сообщение.
G_TYPE_DEBUG_OBJECTS
Напечатать сообщение об подсчёте объекта.
G_TYPE_DEBUG_SIGNALS
Напечатать сообщение об эмиссии сигнала.
G_TYPE_DEBUG_MASK
Маска покрывающая все отладочные флаги.
g_type_init_with_debug_flags ()
debug_flags
:
g_type_name ()
Возвращает уникальное имя которое назначено типу ID (это привилегированный метод определения был ли определённый тип зарегистрирован для помещённого ID).
type
:
Тип для которого возвращается имя.
Возвращает :
g_type_qname ()
Возвращает соответствующий кварк названия типа ID.
type
:
тип для которого возвращается кварк.
Возвращает :
Кварк имени типа или 0.
g_type_from_name ()
Находит типовой ID из полученного имени типа, возвращает 0 если нет зарегистрированного типа с данным именем (это привилегированный метод определения по имени был ли зарегистрирован тип).
name
:
Имя типа для поиска.
Возвращает :
Соответствующий типу ID или 0.
g_type_parent ()
Возвращает прямого родителя типа переданного в типе. Если тип не имеет помещённого в него родителя, то есть это базовый тип, возвращается 0.
type
:
Производный тип.
Возвращает :
Родительский тип.
g_type_depth ()
Возвращает длину родословной помещенной в тип. Это включает сам тип непосредственно, поэтому базовые типы имеют глубину 1.
type
:
Возвращает :
Глубина родословной type
.
g_type_next_base ()
Получает leaf_type
и root_type
который содержится в его родителе, возвращает тип непосредственно родителя root_type
. Другими словами, эта функция определяет тип который получен непосредственно из root_type
, который является также базовым классом leaf_type
. Учитывая корневой тип и тип ответвления, эта функция может использоваться для определения типов и порядка в котором тип ответвления появляется из корневого типа.
leaf_type
:
Потомок root_type
и возвращаемый тип.
root_type
:
Непосредственный родитель возвращаемого типа.
Возвращает :
Непосредственный ребёнок root_type
и родитель leaf_type
.
g_type_is_a ()
Если is_a_type
является производным типом, проверяет является ли type
потомком is_a_type
. Если is_a_type
является интерфейсом, проверяет соответствует ли он type
.
type
:
Тип для проверки родословной.
is_a_type
:
Возможный родитель type
или интерфейс соответствующий type
.
Возвращает :
g_type_class_ref ()
Увеличивает количество ссылок классовой сструктуры принадлежащей type
. Эта функция создаст запрашиваемый класс если он ещё не существует.
type
:
Типовой ID классифицируемого типа.
Возвращает :
g_type_class_peek ()
type
:
Типовой ID классифицируемого типа.
Возвращает :
g_type_class_peek_static ()
type
:
Типовой ID классифицируемого типа.
Возвращает :
Начиная с версии 2.4
g_type_class_unref ()
g_class
:
g_type_class_peek_parent ()
Эта удобная функция часто необходима при инициализации класса. Она возвращает структуру класса непосредственно родительского типа помещенного класса. Так как производные классы содержат количество ссылок их родительских классов пока они инстанциирубтся, возвращаемый класс будет всегда существовать. Эта функция очень похожа на:
g_class
:
Возвращает :
Родительский класс g_class
.
g_type_class_add_private ()
g_class
:
классовая структура для инстанциируемого типа
private_size
:
размер закрытой сструктуры.
Начиная с версии 2.4
g_type_interface_peek ()
instance_class
:
iface_type
:
ID интерфейса которому соответствует этот класс.
Возвращает :
g_type_interface_peek_parent ()
g_iface
:
Возвращает :
g_type_default_interface_ref ()
Увеличивает количество ссылок для интерфейсного типа g_type
, и возвращает значение по умолчанию интерфейс vtable для типа.
g_type
:
интерфейсный тип
Возвращает :
Начиная с версии 2.4
g_type_default_interface_peek ()
Если интерфейсный тип g_type
в текущий момент используется, возвращает значение по умолчанию vtable интерфейса.
g_type
:
интерфейсный тип
Возвращает :
Начиная с версии 2.4
g_type_default_interface_unref ()
g_iface
:
Начиная с версии 2.4
g_type_children ()
type
:
Родительский тип.
n_children
:
Возвращает :
Вновь распределённый и 0-завершённый массив дочерних типов.
g_type_interfaces ()
type
:
Тип для списка интерфейсных типов.
n_interfaces
:
Возвращает :
Вновь распределённый и 0-завершённый массив интерфейсных типов.
g_type_interface_prerequisites ()
Возвращает предпосылки интерфейсного типа.
interface_type
:
тип интерфейса
n_prerequisites
:
Возвращает :
Начиная с версии 2.2
g_type_set_qdata ()
Прикрепляет произвольные данные к типу.
type
:
quark
:
data
:
данные
g_type_get_qdata ()
type
:
quark
:
Возвращает :
g_type_query ()
type
:
query
:
Обеспеченная пользователем структура которая заполняется константными значениями в случае успешного выполнения.
GTypeQuery
имя типа.
размер сструктуры класса.
размер сструктуры экземпляра.
GBaseInitFunc ()
g_class
:
GBaseFinalizeFunc ()
g_class
:
GClassInitFunc ()
Это callback-функция используемая системой типов для инициализации класса определённого типа. Она должна инициализировать все статичные члены класса. Процесс инициализации класса включает:
1 - Копирование основных членов из родительского класса в структуру класса наследника.
2 - Инициализация нулём оставшихся членов не скопированных из родительского класса.
g_class
:
class_data
:
GClassFinalizeFunc ()
g_class
:
class_data
:
GInstanceInitFunc ()
Это callback-функция используемая системой типов для инициализации нового экземпляра типа. Эта функция инициализирует все члены экземпляра и распределяет все ресурсы запрашиваемые ими. Инициализация производного экземпляра включает вызов всех инициализаторов экземпляров его родительских типов, поэтому член класса экземпляра изменяется в течение его инициализации чтобы всегда указывать на класс к которому принадлежит тип введённый в текущий инициализатор.
instance
:
Инициализируемый экземпляр.
g_class
:
Класс создаваемого типового экземпляра.
GInterfaceInitFunc ()
Это callback-функция используемая системой типов для инициализации нового интерфейса. Эта функция должна инициализировать все внутренние данные и распределять любые ресурсы запрошенные интерфейсом.
g_iface
:
Структура для инициализации интерфейса.
iface_data
:
GInterfaceFinalizeFunc ()
g_iface
:
Интерфейсная структура для финализации.
iface_data
:
GTypeClassCacheFunc ()
cache_data
:
g_class
:
Возвращает :
enum GTypeFlags
Битовая маска для контроля характеристик типа.
G_TYPE_FLAG_ABSTRACT
Указывает абстрактный тип. Экземпляры не могут быть созданы для абстрактного типа.
G_TYPE_FLAG_VALUE_ABSTRACT
enum GTypeFundamentalFlags
Битовая маска используемая для контроля специфичных характеристик базового типа.
G_TYPE_FLAG_CLASSED
Указывает классифицированный тип.
G_TYPE_FLAG_INSTANTIATABLE
Указывает инстанциируемый тип (подразумевает классифицируемый).
G_TYPE_FLAG_DERIVABLE
Указывает простой наследуемыйй тип.
G_TYPE_FLAG_DEEP_DERIVABLE
Указывает глубину наследуемого типа (включая производный).
g_type_register_static ()
parent_type
:
Предок производного типа.
type_name
:
0-завершённая строка используемая как имя нового типа.
info
:
flags
:
Возвращает :
Новый идентификатор типа.
g_type_register_static_simple ()
parent_type
:
Тип который является предком производного типа.
type_name
:
0-завершённая строка используемая как имя нового типа.
class_size
:
class_init
:
instance_size
:
instance_init
:
flags
:
Возвращает :
Идентификатор нового типа.
Начиная с версии 2.12
g_type_register_dynamic ()
parent_type
:
Предок данного типа.
type_name
:
0-завершённая строка используемая как имя нового типа.
plugin
:
flags
:
Возвращает :
g_type_register_fundamental ()
type_id
:
Предопределённое значение GTypeFundamentals.
type_name
:
0-завершённая строка используемая как имя нового типа.
info
:
finfo
:
flags
:
Возвращает :
Предопределённый идентификатор типа.
g_type_add_interface_static ()
Добавляет статический interface_type
к instantiable_type
. Информация содержащаяся в структуре GTypeInterfaceInfo указанная параметром info
используется для управления связью.
instance_type
:
interface_type
:
info
:
g_type_add_interface_dynamic ()
instance_type
:
interface_type
:
plugin
:
g_type_interface_add_prerequisite ()
Добавляет prerequisite_type
в список предпосылок interface_type
. Это значит что любая реализация типа interface_type
должна так же реализовать prerequisite_type
. Предпосылки могут рассматриваться как альтернатива интерфейсного ответвления (которые не поддерживает GType). Интерфейс может иметь один инстанциируемый тип предпосылки.
interface_type
:
prerequisite_type
:
g_type_get_plugin ()
type
:
Возвращает :
g_type_interface_get_plugin ()
instance_type
:
interface_type
:
Возвращает :
g_type_fundamental_next ()
Возвращает :
Следующий за последним ID зарегистрированного базового типа, или 0 если система типов исчерпала идентификаторы базовых типов.
g_type_fundamental ()
type_id
:
допустимый ID типа
Возвращает :
ID базового типа
g_type_create_instance ()
type
:
Инстанциируемый тип для создания экземпляра.
Возвращает :
Распределённый и инициализированный экземпляр, подвергается дальнейшей обработке реализацией базового типа.
g_type_free_instance ()
Освобождает экземпляр типа, возвращает его в пул экземпляров типа, если он есть.
instance
:
экземпляр типа.
g_type_add_class_cache_func ()
cache_data
:
данные помещаемые в cache_func
cache_func
:
g_type_remove_class_cache_func ()
cache_data
:
данные полученные при добавлении cache_func
cache_func
:
g_type_class_unref_uncached ()
g_class
:
g_type_add_interface_check ()
check_data
:
данные помещаемые в check_func
check_func
:
функция вызываемая после каждой инициализации интерфейса.
Начиная с версии 2.4
g_type_remove_interface_check ()
check_data
:
check_func
:
Начиная с версии 2.4
GTypeInterfaceCheckFunc ()
check_data
:
g_iface
:
инициализируемый интерфейс
Начиная с версии 2.4
g_type_value_table_peek ()
type
:
Возвращает :
G_DEFINE_TYPE()
TN
:
Имя нового типа, в верхнем регистре.
t_n
:
Имя нового типа, в нижнем регистре, со словами разделёнными символом '_'.
T_P
:
Начиная с версии 2.4
G_DEFINE_TYPE_WITH_CODE()
TN
:
имя нового типа в верхнем регистре (in Camel case).
t_n
:
имя нового типа в нижнем регистре, со словами разделёнными знаком '_'.
T_P
:
_C_
:
Произвольный код который вставляется в функцию *_get_type()
.
Начиная с версии 2.4
G_DEFINE_ABSTRACT_TYPE()
TN
:
имя нового типа в верхнем регистре (in Camel case).
t_n
:
имя нового типа в нижнем регистре, со словами разделёнными знаком '_'.
T_P
:
Начиная с версии 2.4
G_DEFINE_ABSTRACT_TYPE_WITH_CODE()
TN
:
имя нового типа, в верхнем регистре (in Camel case).
t_n
:
имя нового типа в нижнем регистре, со словами разделёнными символом '_'.
T_P
:
_C_
:
Произвольный код вставляемый в функцию @type_name_get_type()
.
Начиная с версии 2.4
G_IMPLEMENT_INTERFACE()
Помните что этот макрос может использоваться только вместе с G_DEFINE_TYPE_* макросами, так как он зависит от переменных имён из этих макросов.
TYPE_IFACE
:
iface_init
:
Функция инициализации интерфейса
Начиная с версии 2.4
G_DEFINE_TYPE_EXTENDED()
разворачивается до
Единственные части определяемые вручную это сструктуры интерфейса и класса и определение функций инициализации экземпляра и класса.
TN
:
t_n
:
T_P
:
_f_
:
_C_
:
Начиная с версии 2.4
G_TYPE_INVALID
G_TYPE_NONE
Базовый тип который используется как замена для возвращаемого типа C void
.
G_TYPE_INTERFACE
Базовый тип из который наследуют все интерфейсы.
G_TYPE_CHAR
G_TYPE_UCHAR
G_TYPE_BOOLEAN
G_TYPE_INT
G_TYPE_UINT
G_TYPE_LONG
G_TYPE_ULONG
G_TYPE_INT64
G_TYPE_UINT64
G_TYPE_ENUM
Базовый тип который наследуют все перечислимые типы.
G_TYPE_FLAGS
Базовый тип который наследуют все флаговые типы.
G_TYPE_FLOAT
G_TYPE_DOUBLE
G_TYPE_STRING
Базовый тип соответствующий nul-завершённой C строке.
G_TYPE_POINTER
G_TYPE_BOXED
Базовый тип который наследуют все boxed типы.
G_TYPE_PARAM
G_TYPE_OBJECT
G_TYPE_GTYPE
G_TYPE_RESERVED_GLIB_FIRST
G_TYPE_RESERVED_GLIB_LAST
Последний номер базового типа зарезервированный для GLib.
G_TYPE_RESERVED_BSE_FIRST
G_TYPE_RESERVED_BSE_LAST
Последний номер базового типа зарезервированный для BSE.
G_TYPE_RESERVED_USER_FIRST
Last updated
Was this helpful?