19#ifndef __G_TYPE_MODULE_H__
20#define __G_TYPE_MODULE_H__
22#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
23#error "Only <glib-object.h> can be included directly."
34#define G_TYPE_TYPE_MODULE (g_type_module_get_type ())
35#define G_TYPE_MODULE(module) (G_TYPE_CHECK_INSTANCE_CAST ((module), G_TYPE_TYPE_MODULE, GTypeModule))
36#define G_TYPE_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TYPE_MODULE, GTypeModuleClass))
37#define G_IS_TYPE_MODULE(module) (G_TYPE_CHECK_INSTANCE_TYPE ((module), G_TYPE_TYPE_MODULE))
38#define G_IS_TYPE_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TYPE_MODULE))
39#define G_TYPE_MODULE_GET_CLASS(module) (G_TYPE_INSTANCE_GET_CLASS ((module), G_TYPE_TYPE_MODULE, GTypeModuleClass))
100#define G_DEFINE_DYNAMIC_TYPE(TN, t_n, T_P) G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
175#define G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE) \
176static void type_name##_init (TypeName *self); \
177static void type_name##_class_init (TypeName##Class *klass); \
178static void type_name##_class_finalize (TypeName##Class *klass); \
179static gpointer type_name##_parent_class = NULL; \
180static GType type_name##_type_id = 0; \
181static gint TypeName##_private_offset; \
183_G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \
186static inline gpointer \
187type_name##_get_instance_private (TypeName *self) \
189 return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
193type_name##_get_type (void) \
195 return type_name##_type_id; \
198type_name##_register_type (GTypeModule *type_module) \
200 GType g_define_type_id G_GNUC_UNUSED; \
201 const GTypeInfo g_define_type_info = { \
202 sizeof (TypeName##Class), \
203 (GBaseInitFunc) NULL, \
204 (GBaseFinalizeFunc) NULL, \
205 (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
206 (GClassFinalizeFunc)(void (*)(void)) type_name##_class_finalize, \
210 (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
213 type_name##_type_id = g_type_module_register_type (type_module, \
216 &g_define_type_info, \
217 (GTypeFlags) flags); \
218 g_define_type_id = type_name##_type_id; \
238#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init) { \
239 const GInterfaceInfo g_implement_interface_info = { \
240 (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \
242 g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
260#define G_ADD_PRIVATE_DYNAMIC(TypeName) { \
261 TypeName##_private_offset = sizeof (TypeName##Private); \
276 const gchar *type_name,
282 GType interface_type,
#define G_DEFINE_AUTOPTR_CLEANUP_FUNC(TypeName, func)
#define GOBJECT_AVAILABLE_IN_ALL
GOBJECT_AVAILABLE_IN_ALL void g_object_unref(gpointer object)
typedefG_BEGIN_DECLS struct _GSList GSList
GOBJECT_AVAILABLE_IN_ALL void g_type_module_set_name(GTypeModule *module, const gchar *name)
GOBJECT_AVAILABLE_IN_ALL void g_type_module_add_interface(GTypeModule *module, GType instance_type, GType interface_type, const GInterfaceInfo *interface_info)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_module_use(GTypeModule *module)
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_get_type(void) G_GNUC_CONST
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_flags(GTypeModule *module, const gchar *name, const GFlagsValue *const_static_values)
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_enum(GTypeModule *module, const gchar *name, const GEnumValue *const_static_values)
typedefG_BEGIN_DECLS struct _GTypeModule GTypeModule
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_type(GTypeModule *module, GType parent_type, const gchar *type_name, const GTypeInfo *type_info, GTypeFlags flags)
GOBJECT_AVAILABLE_IN_ALL void g_type_module_unuse(GTypeModule *module)
G_BEGIN_DECLS typedef char gchar
gboolean(* load)(GTypeModule *module)
void(* unload)(GTypeModule *module)
GObjectClass parent_class