diff --git a/gobject/gtype.c b/gobject/gtype.c index c08f11345..ded0acee2 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -3577,8 +3577,8 @@ type_node_conforms_to_U (TypeNode *node, * Returns: %TRUE if @type is a @is_a_type */ gboolean -g_type_is_a (GType type, - GType iface_type) +(g_type_is_a) (GType type, + GType iface_type) { TypeNode *node, *iface_node; gboolean is_a; diff --git a/gobject/gtype.h b/gobject/gtype.h index f2620f83b..66cac1fc5 100644 --- a/gobject/gtype.h +++ b/gobject/gtype.h @@ -728,6 +728,10 @@ GType g_type_next_base (GType leaf_type GLIB_AVAILABLE_IN_ALL gboolean g_type_is_a (GType type, GType is_a_type); + +/* Hoist exact GType comparisons into the caller */ +#define g_type_is_a(a,b) ((a) == (b) || (g_type_is_a) ((a), (b))) + GLIB_AVAILABLE_IN_ALL gpointer g_type_class_ref (GType type); GLIB_AVAILABLE_IN_ALL