[glib] Add G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Add G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS
- Date: Wed, 15 Feb 2012 14:58:49 +0000 (UTC)
commit ca05902a5883020add334e542a63d7f9381a3117
Author: Dan Winship <danw gnome org>
Date: Fri Feb 10 08:49:17 2012 -0500
Add G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS
Add new macros to disable -Wdeprecated-declarations around a piece of
code, using the C99 (and GNU89) _Pragma() operator. Replace the
existing use of #pragma for this in gio, and suppress the warnings in
gvaluearray.c as well.
https://bugzilla.gnome.org/show_bug.cgi?id=669671
docs/reference/glib/glib-sections.txt | 2 ++
gio/gdesktopappinfo.c | 7 ++++---
gio/giomodule.c | 5 ++---
glib/docs.c | 33 +++++++++++++++++++++++++++++++++
glib/gmacros.h | 11 +++++++++++
gobject/gvaluearray.c | 4 ++++
6 files changed, 56 insertions(+), 6 deletions(-)
---
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index 0d87c4b..1f829f0 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -336,6 +336,8 @@ G_GNUC_ALLOC_SIZE
G_GNUC_ALLOC_SIZE2
G_GNUC_DEPRECATED
G_GNUC_DEPRECATED_FOR
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+G_GNUC_END_IGNORE_DEPRECATIONS
G_GNUC_NORETURN
G_GNUC_UNUSED
G_GNUC_PRINTF
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 5980c3f..449c114 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -3352,6 +3352,8 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type,
/* GDesktopAppInfoLookup interface: */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
typedef GDesktopAppInfoLookupIface GDesktopAppInfoLookupInterface;
G_DEFINE_INTERFACE (GDesktopAppInfoLookup, g_desktop_app_info_lookup, G_TYPE_OBJECT)
@@ -3378,8 +3380,6 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
*
* Deprecated: The #GDesktopAppInfoLookup interface is deprecated and unused by gio.
*/
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
GAppInfo *
g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup,
const char *uri_scheme)
@@ -3392,4 +3392,5 @@ g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *loo
return (* iface->get_default_for_uri_scheme) (lookup, uri_scheme);
}
-#pragma GCC diagnostic pop
+
+G_GNUC_END_IGNORE_DEPRECATIONS
diff --git a/gio/giomodule.c b/gio/giomodule.c
index 9ccc3e3..02c2db6 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -809,8 +809,6 @@ DllMain (HINSTANCE hinstDLL,
#endif
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
void
_g_io_modules_ensure_extension_points_registered (void)
{
@@ -826,7 +824,9 @@ _g_io_modules_ensure_extension_points_registered (void)
#ifdef G_OS_UNIX
#if !GLIB_CHECK_VERSION (3, 0, 0)
ep = g_io_extension_point_register (G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
g_io_extension_point_set_required_type (ep, G_TYPE_DESKTOP_APP_INFO_LOOKUP);
+ G_GNUC_END_IGNORE_DEPRECATIONS
#endif
#endif
@@ -863,7 +863,6 @@ _g_io_modules_ensure_extension_points_registered (void)
G_UNLOCK (registered_extensions);
}
-#pragma GCC diagnostic pop
void
_g_io_modules_ensure_loaded (void)
diff --git a/glib/docs.c b/glib/docs.c
index 97d41cd..f680ae0 100644
--- a/glib/docs.c
+++ b/glib/docs.c
@@ -1987,6 +1987,39 @@
*/
/**
+ * G_GNUC_BEGIN_IGNORE_DEPRECATIONS:
+ *
+ * Tells <command>gcc</command> (if it is a new enough version) to
+ * temporarily stop emitting warnings when functions marked with
+ * %G_GNUC_DEPRECATED or %G_GNUC_DEPRECATED_FOR are called. This is
+ * useful for when you have one deprecated function calling another
+ * one, or when you still have regression tests for deprecated
+ * functions.
+ *
+ * Use %G_GNUC_END_IGNORE_DEPRECATIONS to begin warning again. (If you
+ * are not compiling with <literal>-Wdeprecated-declarations</literal>
+ * then neither macro has any effect.)
+ *
+ * This macro can be used either inside or outside of a function body,
+ * but must appear on a line by itself.
+ *
+ * Since: 2.32
+ */
+
+/**
+ * G_GNUC_END_IGNORE_DEPRECATIONS:
+ *
+ * Undoes the effect of %G_GNUC_BEGIN_IGNORE_DEPRECATIONS, telling
+ * <command>gcc</command> to begin outputting warnings again
+ * (assuming those warnings had been enabled to begin with).
+ *
+ * This macro can be used either inside or outside of a function body,
+ * but must appear on a line by itself.
+ *
+ * Since: 2.32
+ */
+
+/**
* G_GNUC_NORETURN:
*
* Expands to the GNU C <literal>noreturn</literal> function attribute
diff --git a/glib/gmacros.h b/glib/gmacros.h
index 2b340cb..e07610c 100644
--- a/glib/gmacros.h
+++ b/glib/gmacros.h
@@ -114,6 +114,17 @@
#define G_GNUC_DEPRECATED_FOR(f) G_GNUC_DEPRECATED
#endif /* __GNUC__ */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+#define G_GNUC_END_IGNORE_DEPRECATIONS \
+ _Pragma ("GCC diagnostic pop")
+#else
+#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+#define G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
# define G_GNUC_MAY_ALIAS __attribute__((may_alias))
#else
diff --git a/gobject/gvaluearray.c b/gobject/gvaluearray.c
index 39c9c01..db6c719 100644
--- a/gobject/gvaluearray.c
+++ b/gobject/gvaluearray.c
@@ -228,7 +228,9 @@ g_value_array_prepend (GValueArray *value_array,
{
g_return_val_if_fail (value_array != NULL, NULL);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
return g_value_array_insert (value_array, 0, value);
+ G_GNUC_END_IGNORE_DEPRECATIONS
}
/**
@@ -249,7 +251,9 @@ g_value_array_append (GValueArray *value_array,
{
g_return_val_if_fail (value_array != NULL, NULL);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
return g_value_array_insert (value_array, value_array->n_values, value);
+ G_GNUC_END_IGNORE_DEPRECATIONS
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]