函数宏
GObjectDEFINE_DYNAMIC_TYPE_EXTENDED
自:2.14
声明 [源代码]
#define G_DEFINE_DYNAMIC_TYPE_EXTENDED (
TypeName,
type_name,
TYPE_PARENT,
flags,
CODE
)
描述 [源代码]
G_DEFINE_DYNAMIC_TYPE() 的更通用版本,允许指定 `GTypeFlags` 和自定义代码。
G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget,
gtk_gadget,
GTK_TYPE_THING,
0,
G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO,
gtk_gadget_gizmo_init));
展开为
static void gtk_gadget_init (GtkGadget *self);
static void gtk_gadget_class_init (GtkGadgetClass *klass);
static void gtk_gadget_class_finalize (GtkGadgetClass *klass);
static gpointer gtk_gadget_parent_class = NULL;
static GType gtk_gadget_type_id = 0;
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)
{
return gtk_gadget_type_id;
}
static void
gtk_gadget_register_type (GTypeModule *type_module)
{
const GTypeInfo g_define_type_info = {
sizeof (GtkGadgetClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gtk_gadget_class_intern_init,
(GClassFinalizeFunc) gtk_gadget_class_finalize,
NULL, // class_data
sizeof (GtkGadget),
0, // n_preallocs
(GInstanceInitFunc) gtk_gadget_init,
NULL // value_table
};
gtk_gadget_type_id = g_type_module_register_type (type_module,
GTK_TYPE_THING,
"GtkGadget",
&g_define_type_info,
(GTypeFlags) flags);
{
const GInterfaceInfo g_implement_interface_info = {
(GInterfaceInitFunc) gtk_gadget_gizmo_init
};
g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
}
}
自 2.14 起可用
此函数不能直接在语言绑定中使用。