结构体
GObjectTypeInfo
描述 [源]
struct GTypeInfo {
guint16 class_size;
GBaseInitFunc base_init;
GBaseFinalizeFunc base_finalize;
GClassInitFunc class_init;
GClassFinalizeFunc class_finalize;
gconstpointer class_data;
guint16 instance_size;
guint16 n_preallocs;
GInstanceInitFunc instance_init;
const GTypeValueTable* value_table;
}
此结构体用于为类型系统提供初始化和销毁(最终化)类型类及其实例所需的信息。
初始化的结构体传递给 g_type_register_static()
函数(或者在 g_type_plugin_complete_type_info() 中复制到提供的 GTypeInfo
结构体)。类型系统将对此结构体执行深度复制,因此它的内存不需要在 g_type_register_static() 调用之间保持持久。
结构体成员
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
实例初始化函数的位置(可选,仅对可实例化类型)。
value_table
一个
GTypeValueTable
函数表,用于处理此类型的 GValues(通常仅对基本类型有用)。