gtype: guard uses of new fundamental type check
authorRyan Lortie <desrt@desrt.ca>
Fri, 6 Jun 2014 14:45:51 +0000 (10:45 -0400)
committerRyan Lortie <desrt@desrt.ca>
Fri, 6 Jun 2014 14:49:29 +0000 (10:49 -0400)
g_type_is_fundamentally_a (see bug 730984) is a new API/ABI and is
marked with a version macro.  We should therefore avoid its
unconditional use from G_IS_OBJECT() and G_IS_PARAM_SPEC() which are
APIs that have been around for a long time.

This prevents deprecation warnings from being emitted when these
functions are used with an older GLIB_VERSION_MAX_ALLOWED and also
prevents linking to the new ABI in that case (so that it's possible to
use the resulting binary with an older version of GLib).

https://bugzilla.gnome.org/show_bug.cgi?id=731335

gobject/gobject.h
gobject/gparam.h

index a2f9af3..522011f 100644 (file)
@@ -62,7 +62,11 @@ G_BEGIN_DECLS
  * 
  * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_OBJECT.
  */
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_42
 #define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT))
+#else
+#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_OBJECT))
+#endif
 /**
  * G_IS_OBJECT_CLASS:
  * @class: a #GObjectClass
index 8f216e4..7f77ca8 100644 (file)
@@ -50,7 +50,11 @@ G_BEGIN_DECLS
  * Checks whether @pspec "is a" valid #GParamSpec structure of type %G_TYPE_PARAM
  * or derived.
  */
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_42
 #define G_IS_PARAM_SPEC(pspec)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((pspec), G_TYPE_PARAM))
+#else
+#define G_IS_PARAM_SPEC(pspec)         (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM))
+#endif
 /**
  * G_PARAM_SPEC_CLASS:
  * @pclass: a valid #GParamSpecClass