38 #ifndef GNC_GOBJECT_UTILS_H 39 #define GNC_GOBJECT_UTILS_H 42 #include <glib-object.h> 124 #define GNC_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \ 125 const GInterfaceInfo g_implement_interface_info = { \ 126 (GInterfaceInitFunc)(void (*)(void *, void *)) iface_init, NULL, NULL \ 128 g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ 131 #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() 133 #define _GNC_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \ 135 static void type_name##_init (TypeName *self, void *klass); \ 136 static void type_name##_class_init (TypeName##Class *klass); \ 137 static gpointer type_name##_parent_class = NULL; \ 138 static gint TypeName##_private_offset; \ 140 _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ 143 static inline gpointer \ 144 type_name##_get_instance_private (TypeName *self) \ 146 return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \ 150 type_name##_get_type (void) \ 152 static gsize g_define_type_id_static = 0; \ 153 if (g_once_init_enter (&g_define_type_id_static)) \ 155 GType g_define_type_id = \ 156 g_type_register_static_simple (TYPE_PARENT, \ 157 g_intern_static_string (#TypeName), \ 158 sizeof (TypeName##Class), \ 159 (GClassInitFunc) type_name##_class_intern_init, \ 161 (GInstanceInitFunc) type_name##_init, \ 162 (GTypeFlags) flags); \ 164 #define _GNC_DEFINE_TYPE_EXTENDED_END() \ 167 g_once_init_leave (&g_define_type_id_static, g_define_type_id); \ 169 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.