38 #ifndef GNC_GOBJECT_UTILS_H 39 #define GNC_GOBJECT_UTILS_H 42 #include <glib-object.h> 120 #define GNC_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \ 121 const GInterfaceInfo g_implement_interface_info = { \ 122 (GInterfaceInitFunc)(void (*)(void *, void *)) iface_init, NULL, NULL \ 124 g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ 127 #define GNC_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _GNC_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _GNC_DEFINE_TYPE_EXTENDED_END() 129 #define _GNC_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \ 131 static void type_name##_init (TypeName *self, void *class); \ 132 static void type_name##_class_init (TypeName##Class *klass); \ 133 static gpointer type_name##_parent_class = NULL; \ 134 static gint TypeName##_private_offset; \ 136 _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ 139 static inline gpointer \ 140 type_name##_get_instance_private (TypeName *self) \ 142 return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \ 146 type_name##_get_type (void) \ 148 static gsize g_define_type_id_static = 0; \ 149 if (g_once_init_enter (&g_define_type_id_static)) \ 151 GType g_define_type_id = \ 152 g_type_register_static_simple (TYPE_PARENT, \ 153 g_intern_static_string (#TypeName), \ 154 sizeof (TypeName##Class), \ 155 (GClassInitFunc) type_name##_class_intern_init, \ 157 (GInstanceInitFunc) type_name##_init, \ 158 (GTypeFlags) flags); \ 160 #define _GNC_DEFINE_TYPE_EXTENDED_END() \ 163 g_once_init_leave (&g_define_type_id_static, g_define_type_id); \ 165 return g_define_type_id_static; \ const GList * gnc_gobject_tracking_get_list(const gchar *name)
Get a list of all known objects of a specified type.
void gnc_gobject_tracking_dump(void)
Dump the entire object tracking database via the g_log() family of functions.
void gnc_gobject_tracking_remember(GObject *object, GObjectClass *klass)
Tell gnucash to remember this object in the database.
void gnc_gobject_tracking_forget(GObject *object)
Tell gnucash to drop this object from the database.