mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-02 20:16:52 +02:00
split up G_DEFINE_*TYPE macro definitions so C CODE arguments are not
Tue May 2 14:51:03 2006 Tim Janik <timj@gtk.org> * gtype.h: split up G_DEFINE_*TYPE macro definitions so C CODE arguments are not passed on to nested macro calls. patch mostly courtesy of Behdad Esfahbod, fixes #337128.
This commit is contained in:
parent
34ee852317
commit
f2649abe84
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 2 14:51:03 2006 Tim Janik <timj@gtk.org>
|
||||||
|
|
||||||
|
* gtype.h: split up G_DEFINE_*TYPE macro definitions so C CODE arguments
|
||||||
|
are not passed on to nested macro calls. patch mostly courtesy of Behdad
|
||||||
|
Esfahbod, fixes #337128.
|
||||||
|
|
||||||
2006-04-23 Matthias Clasen <mclasen@redhat.com>
|
2006-04-23 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gobject.symbols: Fix a typo.
|
* gobject.symbols: Fix a typo.
|
||||||
|
@ -334,9 +334,10 @@ gpointer g_type_instance_get_private (GTypeInstance *instance,
|
|||||||
* g_print ("GtkGadget-id: %lu\n", g_define_type_id));
|
* g_print ("GtkGadget-id: %lu\n", g_define_type_id));
|
||||||
*/
|
*/
|
||||||
#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
|
#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
|
||||||
#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, _C_)
|
#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()
|
||||||
#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
|
#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
|
||||||
#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, _C_)
|
#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()
|
||||||
|
#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()
|
||||||
|
|
||||||
/* convenience macro to ease interface addition in the CODE
|
/* convenience macro to ease interface addition in the CODE
|
||||||
* section of G_DEFINE_TYPE_WITH_CODE() (this macro relies on
|
* section of G_DEFINE_TYPE_WITH_CODE() (this macro relies on
|
||||||
@ -353,7 +354,7 @@ gpointer g_type_instance_get_private (GTypeInstance *instance,
|
|||||||
g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
|
g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define G_DEFINE_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE) \
|
#define _G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \
|
||||||
\
|
\
|
||||||
static void type_name##_init (TypeName *self); \
|
static void type_name##_init (TypeName *self); \
|
||||||
static void type_name##_class_init (TypeName##Class *klass); \
|
static void type_name##_class_init (TypeName##Class *klass); \
|
||||||
@ -378,10 +379,13 @@ type_name##_get_type (void) \
|
|||||||
sizeof (TypeName), \
|
sizeof (TypeName), \
|
||||||
(GInstanceInitFunc)type_name##_init, \
|
(GInstanceInitFunc)type_name##_init, \
|
||||||
(GTypeFlags) flags); \
|
(GTypeFlags) flags); \
|
||||||
{ CODE ; } \
|
{ /* custom code follows */
|
||||||
|
#define _G_DEFINE_TYPE_EXTENDED_END() \
|
||||||
|
/* following custom code */ \
|
||||||
|
} \
|
||||||
} \
|
} \
|
||||||
return g_define_type_id; \
|
return g_define_type_id; \
|
||||||
}
|
} /* closes type_name##_get_type() */
|
||||||
|
|
||||||
|
|
||||||
/* --- protected (for fundamental type implementations) --- */
|
/* --- protected (for fundamental type implementations) --- */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user