22#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
23#error "Only <glib-object.h> can be included directly."
42#define G_TYPE_FUNDAMENTAL(type) (g_type_fundamental (type))
48#define G_TYPE_FUNDAMENTAL_SHIFT (2)
55#define G_TYPE_FUNDAMENTAL_MAX (255 << G_TYPE_FUNDAMENTAL_SHIFT)
65#define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0)
72#define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1)
78#define G_TYPE_INTERFACE G_TYPE_MAKE_FUNDAMENTAL (2)
87#define G_TYPE_CHAR G_TYPE_MAKE_FUNDAMENTAL (3)
93#define G_TYPE_UCHAR G_TYPE_MAKE_FUNDAMENTAL (4)
99#define G_TYPE_BOOLEAN G_TYPE_MAKE_FUNDAMENTAL (5)
105#define G_TYPE_INT G_TYPE_MAKE_FUNDAMENTAL (6)
111#define G_TYPE_UINT G_TYPE_MAKE_FUNDAMENTAL (7)
117#define G_TYPE_LONG G_TYPE_MAKE_FUNDAMENTAL (8)
123#define G_TYPE_ULONG G_TYPE_MAKE_FUNDAMENTAL (9)
129#define G_TYPE_INT64 G_TYPE_MAKE_FUNDAMENTAL (10)
135#define G_TYPE_UINT64 G_TYPE_MAKE_FUNDAMENTAL (11)
141#define G_TYPE_ENUM G_TYPE_MAKE_FUNDAMENTAL (12)
147#define G_TYPE_FLAGS G_TYPE_MAKE_FUNDAMENTAL (13)
153#define G_TYPE_FLOAT G_TYPE_MAKE_FUNDAMENTAL (14)
159#define G_TYPE_DOUBLE G_TYPE_MAKE_FUNDAMENTAL (15)
165#define G_TYPE_STRING G_TYPE_MAKE_FUNDAMENTAL (16)
171#define G_TYPE_POINTER G_TYPE_MAKE_FUNDAMENTAL (17)
177#define G_TYPE_BOXED G_TYPE_MAKE_FUNDAMENTAL (18)
183#define G_TYPE_PARAM G_TYPE_MAKE_FUNDAMENTAL (19)
189#define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20)
207#define G_TYPE_VARIANT G_TYPE_MAKE_FUNDAMENTAL (21)
227#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
234#define G_TYPE_RESERVED_GLIB_FIRST (22)
240#define G_TYPE_RESERVED_GLIB_LAST (31)
247#define G_TYPE_RESERVED_BSE_FIRST (32)
253#define G_TYPE_RESERVED_BSE_LAST (48)
260#define G_TYPE_RESERVED_USER_FIRST (49)
273#define G_TYPE_IS_FUNDAMENTAL(type) ((type) <= G_TYPE_FUNDAMENTAL_MAX)
284#define G_TYPE_IS_DERIVED(type) ((type) > G_TYPE_FUNDAMENTAL_MAX)
300#define G_TYPE_IS_INTERFACE(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
318#define G_TYPE_IS_CLASSED(type) (g_type_test_flags ((type), G_TYPE_FLAG_CLASSED))
328#define G_TYPE_IS_INSTANTIATABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE))
338#define G_TYPE_IS_DERIVABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_DERIVABLE))
348#define G_TYPE_IS_DEEP_DERIVABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_DEEP_DERIVABLE))
359#define G_TYPE_IS_ABSTRACT(type) (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))
370#define G_TYPE_IS_VALUE_ABSTRACT(type) (g_type_test_flags ((type), G_TYPE_FLAG_VALUE_ABSTRACT))
379#define G_TYPE_IS_VALUE_TYPE(type) (g_type_check_is_value_type (type))
388#define G_TYPE_HAS_VALUE_TABLE(type) (g_type_value_table_peek (type) != NULL)
400#define G_TYPE_IS_FINAL(type) (g_type_test_flags ((type), G_TYPE_FLAG_FINAL)) GOBJECT_AVAILABLE_MACRO_IN_2_70
413#define G_TYPE_IS_DEPRECATED(type) (g_type_test_flags ((type), G_TYPE_FLAG_DEPRECATED)) GOBJECT_AVAILABLE_MACRO_IN_2_76
424#if GLIB_SIZEOF_VOID_P > GLIB_SIZEOF_SIZE_T
426#elif GLIB_SIZEOF_SIZE_T != GLIB_SIZEOF_LONG || !defined (G_CXX_STD_VERSION)
513#define G_TYPE_CHECK_INSTANCE(instance) (_G_TYPE_CHI ((GTypeInstance*) (instance)))
528#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type))
541#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type) (_G_TYPE_CIT ((instance), (g_type)))
554#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type) (_G_TYPE_CIFT ((instance), (g_type)))
571#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type) (_G_TYPE_IGC ((instance), (g_type), c_type))
584#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
597#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type) (_G_TYPE_CCC ((g_class), (g_type), c_type))
610#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type) (_G_TYPE_CCT ((g_class), (g_type)))
622#define G_TYPE_CHECK_VALUE(value) (_G_TYPE_CHV ((value)))
635#define G_TYPE_CHECK_VALUE_TYPE(value, g_type) (_G_TYPE_CVH ((value), (g_type)))
646#define G_TYPE_FROM_INSTANCE(instance) (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
657#define G_TYPE_FROM_CLASS(g_class) (((GTypeClass*) (g_class))->g_type)
668#define G_TYPE_FROM_INTERFACE(g_iface) (((GTypeInterface*) (g_iface))->g_type)
688#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type) ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type))) GOBJECT_DEPRECATED_MACRO_IN_2_58_FOR(G_ADD_PRIVATE)
706#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type) ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
760#define g_type_is_a(a,b) ((a) == (b) || (g_type_is_a) ((a), (b)))
791 guint *n_interfaces);
1342 guint n_collect_values,
1344 guint collect_flags);
1404 guint n_collect_values,
1406 guint collect_flags);
1456 const gchar *type_name,
1461 const gchar *type_name,
1464 guint instance_size,
1470 const gchar *type_name,
1475 const gchar *type_name,
1481 GType interface_type,
1485 GType interface_type,
1489 GType prerequisite_type);
1492 guint *n_prerequisites);
1495 (
GType interface_type);
1498 gsize private_size);
1501 gsize private_size);
1504 GType private_type);
1507 gint *private_size_or_offset);
1511 gsize private_size);
1514 GType private_type);
1602#define G_DECLARE_FINAL_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName) \
1603 GType module_obj_name##_get_type (void); \
1604 G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
1605 typedef struct _##ModuleObjName ModuleObjName; \
1606 typedef struct { ParentName##Class parent_class; } ModuleObjName##Class; \
1608 _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \
1609 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \
1611 G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \
1612 return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \
1613 G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \
1614 return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \
1615 G_GNUC_END_IGNORE_DEPRECATIONS
1705#define G_DECLARE_DERIVABLE_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName) \
1706 GType module_obj_name##_get_type (void); \
1707 G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
1708 typedef struct _##ModuleObjName ModuleObjName; \
1709 typedef struct _##ModuleObjName##Class ModuleObjName##Class; \
1710 struct _##ModuleObjName { ParentName parent_instance; }; \
1712 _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \
1713 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \
1715 G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \
1716 return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \
1717 G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \
1718 return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \
1719 G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \
1720 return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \
1721 G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \
1722 return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); } \
1723 G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) { \
1724 return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \
1725 G_GNUC_END_IGNORE_DEPRECATIONS
1797#define G_DECLARE_INTERFACE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, PrerequisiteName) \
1798 GType module_obj_name##_get_type (void); \
1799 G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
1800 typedef struct _##ModuleObjName ModuleObjName; \
1801 typedef struct _##ModuleObjName##Interface ModuleObjName##Interface; \
1803 _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, PrerequisiteName) \
1805 G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \
1806 return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \
1807 G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \
1808 return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \
1809 G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) { \
1810 return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
1811 G_GNUC_END_IGNORE_DEPRECATIONS
1828#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
1844#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
1870#define G_DEFINE_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, G_ADD_PRIVATE (TN))
1885#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
1904#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
1918#define G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, G_ADD_PRIVATE (TN))
1934#define G_DEFINE_FINAL_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_FINAL, {}) GOBJECT_AVAILABLE_MACRO_IN_2_70
1953#define G_DEFINE_FINAL_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_FINAL) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() GOBJECT_AVAILABLE_MACRO_IN_2_70
1969#define G_DEFINE_FINAL_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_FINAL, G_ADD_PRIVATE (TN)) GOBJECT_AVAILABLE_MACRO_IN_2_70
2047#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
2072#define G_DEFINE_INTERFACE(TN, t_n, T_P) G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, ;)
2093#define G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P) {_C_;} _G_DEFINE_INTERFACE_EXTENDED_END()
2109#define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \
2110 const GInterfaceInfo g_implement_interface_info = { \
2111 (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \
2113 g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
2188#define G_ADD_PRIVATE(TypeName) { \
2189 TypeName##_private_offset = \
2190 g_type_add_instance_private (g_define_type_id, sizeof (TypeName##Private)); \
2207#define G_PRIVATE_OFFSET(TypeName, field) \
2208 (TypeName##_private_offset + (G_STRUCT_OFFSET (TypeName##Private, field)))
2225#define G_PRIVATE_FIELD_P(TypeName, inst, field_name) \
2226 G_STRUCT_MEMBER_P (inst, G_PRIVATE_OFFSET (TypeName, field_name))
2244#define G_PRIVATE_FIELD(TypeName, inst, field_type, field_name) \
2245 G_STRUCT_MEMBER (field_type, inst, G_PRIVATE_OFFSET (TypeName, field_name))
2251#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
2252#define _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \
2253static void type_name##_class_intern_init (gpointer klass) \
2255 type_name##_parent_class = g_type_class_peek_parent (klass); \
2256 if (TypeName##_private_offset != 0) \
2257 g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
2258 type_name##_class_init ((TypeName##Class*) klass); \
2262#define _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \
2263static void type_name##_class_intern_init (gpointer klass) \
2265 type_name##_parent_class = g_type_class_peek_parent (klass); \
2266 type_name##_class_init ((TypeName##Class*) klass); \
2270#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_80
2271#define _g_type_once_init_type GType
2272#define _g_type_once_init_enter g_once_init_enter_pointer
2273#define _g_type_once_init_leave g_once_init_leave_pointer
2275#define _g_type_once_init_type gsize
2276#define _g_type_once_init_enter g_once_init_enter
2277#define _g_type_once_init_leave g_once_init_leave
2281#define _G_DEFINE_TYPE_EXTENDED_BEGIN_PRE(TypeName, type_name) \
2283static void type_name##_init (TypeName *self); \
2284static void type_name##_class_init (TypeName##Class *klass); \
2285static GType type_name##_get_type_once (void); \
2286static gpointer type_name##_parent_class = NULL; \
2287static gint TypeName##_private_offset; \
2289_G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \
2292static inline gpointer \
2293type_name##_get_instance_private (TypeName *self) \
2295 return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
2299type_name##_get_type (void) \
2301 static _g_type_once_init_type static_g_define_type_id = 0;
2305#define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
2306 if (_g_type_once_init_enter (&static_g_define_type_id)) \
2308 GType g_define_type_id = type_name##_get_type_once (); \
2309 _g_type_once_init_leave (&static_g_define_type_id, g_define_type_id); \
2311 return static_g_define_type_id; \
2316type_name##_get_type_once (void) \
2318 GType g_define_type_id = \
2319 g_type_register_static_simple (TYPE_PARENT, \
2320 g_intern_static_string (#TypeName), \
2321 sizeof (TypeName##Class), \
2322 (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
2323 sizeof (TypeName), \
2324 (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
2325 (GTypeFlags) flags); \
2327#define _G_DEFINE_TYPE_EXTENDED_END() \
2330 return g_define_type_id; \
2336#define _G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \
2337 _G_DEFINE_TYPE_EXTENDED_BEGIN_PRE (TypeName, type_name) \
2338 _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER (TypeName, type_name, TYPE_PARENT, flags)
2342#define _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PREREQ) \
2344static void type_name##_default_init (TypeName##Interface *klass); \
2347type_name##_get_type (void) \
2349 static _g_type_once_init_type static_g_define_type_id = 0; \
2350 if (_g_type_once_init_enter (&static_g_define_type_id)) \
2352 GType g_define_type_id = \
2353 g_type_register_static_simple (G_TYPE_INTERFACE, \
2354 g_intern_static_string (#TypeName), \
2355 sizeof (TypeName##Interface), \
2356 (GClassInitFunc)(void (*)(void)) type_name##_default_init, \
2358 (GInstanceInitFunc)NULL, \
2360 if (TYPE_PREREQ != G_TYPE_INVALID) \
2361 g_type_interface_add_prerequisite (g_define_type_id, TYPE_PREREQ); \
2363#define _G_DEFINE_INTERFACE_EXTENDED_END() \
2366 _g_type_once_init_leave (&static_g_define_type_id, g_define_type_id); \
2368 return static_g_define_type_id; \
2434#define G_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) G_DEFINE_BOXED_TYPE_WITH_CODE (TypeName, type_name, copy_func, free_func, {})
2462#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
2467#if !defined (G_CXX_STD_VERSION) && (G_GNUC_CHECK_VERSION(2, 7)) && \
2468 !(defined (__APPLE__) && defined (__ppc64__))
2469#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
2470static GType type_name##_get_type_once (void); \
2473type_name##_get_type (void) \
2475 static _g_type_once_init_type static_g_define_type_id = 0; \
2476 if (_g_type_once_init_enter (&static_g_define_type_id)) \
2478 GType g_define_type_id = type_name##_get_type_once (); \
2479 _g_type_once_init_leave (&static_g_define_type_id, g_define_type_id); \
2481 return static_g_define_type_id; \
2486type_name##_get_type_once (void) \
2488 GType (* _g_register_boxed) \
2492 TypeName * (*do_copy_type) (TypeName *); \
2493 TypeName * (*do_const_copy_type) (const TypeName *); \
2494 GBoxedCopyFunc do_copy_boxed; \
2495 } __attribute__((__transparent_union__)), \
2498 void (* do_free_type) (TypeName *); \
2499 GBoxedFreeFunc do_free_boxed; \
2500 } __attribute__((__transparent_union__)) \
2501 ) = g_boxed_type_register_static; \
2502 GType g_define_type_id = \
2503 _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \
2506#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
2507static GType type_name##_get_type_once (void); \
2510type_name##_get_type (void) \
2512 static _g_type_once_init_type static_g_define_type_id = 0; \
2513 if (_g_type_once_init_enter (&static_g_define_type_id)) \
2515 GType g_define_type_id = type_name##_get_type_once (); \
2516 _g_type_once_init_leave (&static_g_define_type_id, g_define_type_id); \
2518 return static_g_define_type_id; \
2523type_name##_get_type_once (void) \
2525 GType g_define_type_id = \
2526 g_boxed_type_register_static (g_intern_static_string (#TypeName), \
2527 (GBoxedCopyFunc) copy_func, \
2528 (GBoxedFreeFunc) free_func); \
2543#define G_DEFINE_POINTER_TYPE(TypeName, type_name) G_DEFINE_POINTER_TYPE_WITH_CODE (TypeName, type_name, {})
2557#define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
2559#define _G_DEFINE_POINTER_TYPE_BEGIN(TypeName, type_name) \
2560static GType type_name##_get_type_once (void); \
2563type_name##_get_type (void) \
2565 static _g_type_once_init_type static_g_define_type_id = 0; \
2566 if (_g_type_once_init_enter (&static_g_define_type_id)) \
2568 GType g_define_type_id = type_name##_get_type_once (); \
2569 _g_type_once_init_leave (&static_g_define_type_id, g_define_type_id); \
2571 return static_g_define_type_id; \
2576type_name##_get_type_once (void) \
2578 GType g_define_type_id = \
2579 g_pointer_type_register_static (g_intern_static_string (#TypeName)); \
2587 GType interface_type);
2655#if defined(G_DISABLE_CAST_CHECKS) || defined(__OPTIMIZE__)
2656# define _G_TYPE_CIC(ip, gt, ct) ((ct*) (void *) ip)
2657# define _G_TYPE_CCC(cp, gt, ct) ((ct*) (void *) cp)
2659# define _G_TYPE_CIC(ip, gt, ct) \
2660 ((ct*) (void *) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
2661# define _G_TYPE_CCC(cp, gt, ct) \
2662 ((ct*) (void *) g_type_check_class_cast ((GTypeClass*) cp, gt))
2665#define _G_TYPE_CHI(ip) (g_type_check_instance ((GTypeInstance*) ip))
2666#define _G_TYPE_CHV(vl) (g_type_check_value ((GValue*) vl))
2667#define _G_TYPE_IGC(ip, gt, ct) ((ct*) (((GTypeInstance*) ip)->g_class))
2668#define _G_TYPE_IGI(ip, gt, ct) ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
2669#define _G_TYPE_CIFT(ip, ft) (g_type_check_instance_is_fundamentally_a ((GTypeInstance*) ip, ft))
2671# define _G_TYPE_CIT(ip, gt) (G_GNUC_EXTENSION ({ \
2672 GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
2675 else if (__inst->g_class && __inst->g_class->g_type == __t) \
2678 __r = g_type_check_instance_is_a (__inst, __t); \
2681# define _G_TYPE_CCT(cp, gt) (G_GNUC_EXTENSION ({ \
2682 GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
2685 else if (__class->g_type == __t) \
2688 __r = g_type_check_class_is_a (__class, __t); \
2691# define _G_TYPE_CVH(vl, gt) (G_GNUC_EXTENSION ({ \
2692 const GValue *__val = (const GValue*) vl; GType __t = gt; gboolean __r; \
2695 else if (__val->g_type == __t) \
2698 __r = g_type_check_value_holds (__val, __t); \
2702# define _G_TYPE_CIT(ip, gt) (g_type_check_instance_is_a ((GTypeInstance*) ip, gt))
2703# define _G_TYPE_CCT(cp, gt) (g_type_check_class_is_a ((GTypeClass*) cp, gt))
2704# define _G_TYPE_CVH(vl, gt) (g_type_check_value_holds ((const GValue*) vl, gt))
2711#define G_TYPE_FLAG_RESERVED_ID_BIT ((GType) (1 << 0))
2722#define GPOINTER_TO_TYPE(p) ((GType) (guintptr) (p)) GOBJECT_AVAILABLE_MACRO_IN_2_80
2732#define GTYPE_TO_POINTER(t) ((gpointer) (guintptr) (t)) GOBJECT_AVAILABLE_MACRO_IN_2_80
#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
#define G_GNUC_END_IGNORE_DEPRECATIONS
#define GOBJECT_DEPRECATED_TYPE_IN_2_36
#define GOBJECT_AVAILABLE_IN_2_34
#define GOBJECT_AVAILABLE_TYPE_IN_2_78
#define GOBJECT_AVAILABLE_IN_2_44
#define GOBJECT_DEPRECATED_IN_2_36
#define GOBJECT_AVAILABLE_IN_2_38
#define GOBJECT_AVAILABLE_IN_ALL
#define GOBJECT_AVAILABLE_IN_2_42
#define GOBJECT_AVAILABLE_IN_2_36
#define GOBJECT_AVAILABLE_IN_2_68
#define GOBJECT_DEPRECATED_IN_2_58
G_BEGIN_DECLS typedef guint32 GQuark
GOBJECT_AVAILABLE_IN_ALL void g_type_class_unref_uncached(gpointer g_class)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_default_interface_peek(GType g_type)
GOBJECT_AVAILABLE_IN_ALL void g_type_class_unref(gpointer g_class)
GOBJECT_AVAILABLE_IN_ALL void g_type_set_qdata(GType type, GQuark quark, gpointer data)
GOBJECT_AVAILABLE_IN_ALL GTypePlugin * g_type_interface_get_plugin(GType instance_type, GType interface_type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_default_interface_ref(GType g_type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_class_peek_static(GType type)
GOBJECT_AVAILABLE_IN_ALL void g_type_default_interface_unref(gpointer g_iface)
G_GNUC_BEGIN_IGNORE_DEPRECATIONS GOBJECT_DEPRECATED_IN_2_36 void g_type_init(void)
void(* GBaseFinalizeFunc)(gpointer g_class)
GOBJECT_AVAILABLE_IN_2_38 gint g_type_class_get_instance_private_offset(gpointer g_class)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_class_ref(GType type)
GOBJECT_AVAILABLE_IN_2_34 void g_type_ensure(GType type)
void(* GClassInitFunc)(gpointer g_class, gpointer class_data)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_class_peek(GType type)
GOBJECT_AVAILABLE_IN_ALL GType * g_type_interfaces(GType type, guint *n_interfaces)
GOBJECT_AVAILABLE_IN_2_42 gboolean g_type_check_instance_is_fundamentally_a(GTypeInstance *instance, GType fundamental_type) G_GNUC_PURE
G_GNUC_END_IGNORE_DEPRECATIONS GOBJECT_AVAILABLE_IN_ALL const gchar * g_type_name(GType type)
GOBJECT_AVAILABLE_IN_ALL GTypeClass * g_type_check_class_cast(GTypeClass *g_class, GType is_a_type)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_value_holds(const GValue *value, GType type) G_GNUC_PURE
GOBJECT_AVAILABLE_IN_ALL GTypePlugin * g_type_get_plugin(GType type)
GOBJECT_AVAILABLE_IN_ALL void g_type_free_instance(GTypeInstance *instance)
GOBJECT_AVAILABLE_IN_2_68 GType g_type_interface_instantiatable_prerequisite(GType interface_type)
void(* GInstanceInitFunc)(GTypeInstance *instance, gpointer g_class)
GOBJECT_AVAILABLE_IN_ALL GQuark g_type_qname(GType type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_class_get_private(GTypeClass *klass, GType private_type)
GOBJECT_AVAILABLE_IN_ALL GType * g_type_children(GType type, guint *n_children)
GOBJECT_AVAILABLE_IN_ALL void g_type_add_interface_static(GType instance_type, GType interface_type, const GInterfaceInfo *info)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_instance_is_a(GTypeInstance *instance, GType iface_type) G_GNUC_PURE
@ G_TYPE_DEBUG_INSTANCE_COUNT
GOBJECT_AVAILABLE_IN_ALL GType g_type_next_base(GType leaf_type, GType root_type)
void(* GBaseInitFunc)(gpointer g_class)
GOBJECT_AVAILABLE_IN_ALL GTypeValueTable * g_type_value_table_peek(GType type)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_value(const GValue *value) G_GNUC_PURE
GOBJECT_AVAILABLE_IN_2_38 void g_type_class_adjust_private_offset(gpointer g_class, gint *private_size_or_offset)
G_GNUC_END_IGNORE_DEPRECATIONS GOBJECT_AVAILABLE_IN_ALL GType g_type_register_static(GType parent_type, const gchar *type_name, const GTypeInfo *info, GTypeFlags flags)
GOBJECT_AVAILABLE_IN_ALL void g_type_add_class_private(GType class_type, gsize private_size)
void(* GTypeInterfaceCheckFunc)(gpointer check_data, gpointer g_iface)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_test_flags(GType type, guint flags) G_GNUC_CONST
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef void(* GTypeValueInitFunc)(GValue *value)
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef gchar *(* GTypeValueLCopyFunc)(const GValue *value, guint n_collect_values, GTypeCValue *collect_values, guint collect_flags)
GOBJECT_AVAILABLE_IN_ALL void g_type_add_interface_check(gpointer check_data, GTypeInterfaceCheckFunc check_func)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_is_value_type(GType type) G_GNUC_CONST
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_instance_get_private(GTypeInstance *instance, GType private_type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_interface_peek_parent(gpointer g_iface)
GOBJECT_AVAILABLE_IN_ALL void g_type_query(GType type, GTypeQuery *query)
GOBJECT_AVAILABLE_IN_ALL GType g_type_parent(GType type)
GOBJECT_AVAILABLE_IN_ALL GTypeInstance * g_type_create_instance(GType type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_get_qdata(GType type, GQuark quark)
GOBJECT_DEPRECATED_IN_2_36 void g_type_init_with_debug_flags(GTypeDebugFlags debug_flags)
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef gchar *(* GTypeValueCollectFunc)(GValue *value, guint n_collect_values, GTypeCValue *collect_values, guint collect_flags)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_class_peek_parent(gpointer g_class)
GOBJECT_DEPRECATED_IN_2_58 void g_type_class_add_private(gpointer g_class, gsize private_size)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_instance(GTypeInstance *instance) G_GNUC_PURE
#define g_type_is_a(a, b)
GOBJECT_AVAILABLE_IN_ALL GType g_type_from_name(const gchar *name)
GOBJECT_AVAILABLE_IN_2_38 gint g_type_add_instance_private(GType class_type, gsize private_size)
GOBJECT_AVAILABLE_IN_ALL guint g_type_depth(GType type)
GOBJECT_AVAILABLE_IN_ALL gpointer g_type_interface_peek(gpointer instance_class, GType iface_type)
gboolean(* GTypeClassCacheFunc)(gpointer cache_data, GTypeClass *g_class)
void(* GClassFinalizeFunc)(gpointer g_class, gpointer class_data)
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef gpointer(* GTypeValuePeekPointerFunc)(const GValue *value)
GOBJECT_AVAILABLE_IN_ALL void g_type_add_class_cache_func(gpointer cache_data, GTypeClassCacheFunc cache_func)
GOBJECT_AVAILABLE_IN_ALL GType g_type_fundamental(GType type_id)
GOBJECT_AVAILABLE_IN_ALL void g_type_add_interface_dynamic(GType instance_type, GType interface_type, GTypePlugin *plugin)
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef void(* GTypeValueCopyFunc)(const GValue *src_value, GValue *dest_value)
@ G_TYPE_FLAG_DEEP_DERIVABLE
@ G_TYPE_FLAG_INSTANTIATABLE
GOBJECT_AVAILABLE_IN_2_44 int g_type_get_instance_count(GType type)
GOBJECT_AVAILABLE_IN_ALL GType g_type_register_fundamental(GType type_id, const gchar *type_name, const GTypeInfo *info, const GTypeFundamentalInfo *finfo, GTypeFlags flags)
GOBJECT_AVAILABLE_IN_ALL void g_type_remove_interface_check(gpointer check_data, GTypeInterfaceCheckFunc check_func)
GOBJECT_AVAILABLE_IN_ALL GType g_type_fundamental_next(void)
GOBJECT_AVAILABLE_IN_ALL void g_type_interface_add_prerequisite(GType interface_type, GType prerequisite_type)
@ GOBJECT_AVAILABLE_ENUMERATOR_IN_2_70
@ G_TYPE_FLAG_VALUE_ABSTRACT
@ GOBJECT_AVAILABLE_ENUMERATOR_IN_2_76
@ GOBJECT_AVAILABLE_ENUMERATOR_IN_2_74
GOBJECT_AVAILABLE_IN_ALL const gchar * g_type_name_from_class(GTypeClass *g_class)
GOBJECT_AVAILABLE_IN_2_36 guint g_type_get_type_registration_serial(void)
GOBJECT_AVAILABLE_TYPE_IN_2_78 typedef void(* GTypeValueFreeFunc)(GValue *value)
struct _GTypePlugin GTypePlugin
void(* GInterfaceInitFunc)(gpointer g_iface, gpointer iface_data)
GOBJECT_AVAILABLE_IN_ALL void g_type_remove_class_cache_func(gpointer cache_data, GTypeClassCacheFunc cache_func)
GOBJECT_AVAILABLE_IN_ALL GType * g_type_interface_prerequisites(GType interface_type, guint *n_prerequisites)
GOBJECT_AVAILABLE_IN_ALL GTypeInstance * g_type_check_instance_cast(GTypeInstance *instance, GType iface_type)
GOBJECT_AVAILABLE_IN_ALL const gchar * g_type_name_from_instance(GTypeInstance *instance)
GOBJECT_AVAILABLE_IN_ALL GType g_type_register_static_simple(GType parent_type, const gchar *type_name, guint class_size, GClassInitFunc class_init, guint instance_size, GInstanceInitFunc instance_init, GTypeFlags flags)
void(* GInterfaceFinalizeFunc)(gpointer g_iface, gpointer iface_data)
GOBJECT_AVAILABLE_IN_ALL GType g_type_register_dynamic(GType parent_type, const gchar *type_name, GTypePlugin *plugin, GTypeFlags flags)
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_check_class_is_a(GTypeClass *g_class, GType is_a_type) G_GNUC_PURE
G_BEGIN_DECLS typedef char gchar
const void * gconstpointer
GInterfaceInitFunc interface_init
GInterfaceFinalizeFunc interface_finalize
GTypeFundamentalFlags type_flags
GClassInitFunc class_init
GBaseFinalizeFunc base_finalize
GInstanceInitFunc instance_init
const GTypeValueTable * value_table
GClassFinalizeFunc class_finalize
GTypeValuePeekPointerFunc value_peek_pointer
GTypeValueFreeFunc value_free
const gchar * collect_format
GTypeValueCollectFunc collect_value
GTypeValueLCopyFunc lcopy_value
const gchar * lcopy_format
GTypeValueCopyFunc value_copy
GTypeValueInitFunc value_init