mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-23 22:16:16 +01:00
Add G_IMPLEMENT_INTERFACE_DYNAMIC
Convenience macro to easy interface addition for dynamic types. https://bugzilla.gnome.org/show_bug.cgi?id=508157
This commit is contained in:
parent
b3156508c4
commit
7d51c96e5e
@ -202,6 +202,7 @@ g_type_module_register_flags
|
||||
|
||||
G_DEFINE_DYNAMIC_TYPE
|
||||
G_DEFINE_DYNAMIC_TYPE_EXTENDED
|
||||
G_IMPLEMENT_INTERFACE_DYNAMIC
|
||||
|
||||
<SUBSECTION Standard>
|
||||
G_TYPE_MODULE
|
||||
|
@ -119,8 +119,8 @@ struct _GTypeModuleClass
|
||||
* gtk_gadget,
|
||||
* GTK_TYPE_THING,
|
||||
* 0,
|
||||
* G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
|
||||
* gtk_gadget_gizmo_init));
|
||||
* G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO,
|
||||
* gtk_gadget_gizmo_init));
|
||||
* ]|
|
||||
* expands to
|
||||
* |[
|
||||
@ -167,7 +167,7 @@ struct _GTypeModuleClass
|
||||
* 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);
|
||||
* g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
|
||||
* }
|
||||
* }
|
||||
* ]|
|
||||
@ -215,6 +215,27 @@ type_name##_register_type (GTypeModule *type_module) \
|
||||
{ CODE ; } \
|
||||
}
|
||||
|
||||
/**
|
||||
* G_IMPLEMENT_INTERFACE_DYNAMIC:
|
||||
* @TYPE_IFACE: The #GType of the interface to add
|
||||
* @iface_init: The interface init function
|
||||
*
|
||||
* A convenience macro to ease interface addition in the @_C_ section
|
||||
* of G_DEFINE_DYNAMIC_TYPE_EXTENDED(). See G_DEFINE_DYNAMIC_TYPE_EXTENDED()
|
||||
* for an example.
|
||||
*
|
||||
* Note that this macro can only be used together with the
|
||||
* G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable
|
||||
* names from that macro.
|
||||
*
|
||||
* Since: 2.24
|
||||
*/
|
||||
#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init) { \
|
||||
const GInterfaceInfo g_implement_interface_info = { \
|
||||
iface_init, NULL, NULL \
|
||||
}; \
|
||||
g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
|
||||
}
|
||||
|
||||
GType g_type_module_get_type (void) G_GNUC_CONST;
|
||||
gboolean g_type_module_use (GTypeModule *module);
|
||||
|
Loading…
Reference in New Issue
Block a user