[glib/wip/visibility2: 4/7] Add a new _GLIB_EXTERN macro for "extern"



commit fadfe696fa3a3d055b50e5b8919d55dbf076eab4
Author: Ryan Lortie <desrt desrt ca>
Date:   Thu Dec 6 13:37:45 2012 -0500

    Add a new _GLIB_EXTERN macro for "extern"
    
    This macro simply evaluates the "extern" unless it has been explicitly
    defined to something else.
    
    All of the version macros (including the unversioned deprecation markers
    and GLIB_AVAILABLE_IN_ALL) now include _GLIB_EXTERN as part of their
    definition.
    
    G_INLINE has also been modified to use _GLIB_EXTERN where appropriate.
    
    This macro should never be used outside of the gmacros.h/gversonmacros.h
    headers.
    
    The effect of this patch is that "extern" has now been added to all
    functions declared in installed headers.  Strictly speaking, this is
    something we should have had all along...
    
    GLIB_VAR and GOBJECT_VAR have also been modified to use _GLIB_EXTERN on
    non-Windows, instead of "extern" which they were using before.  The
    eventual goal is to use the normal version/deprecation macros on
    exported variables and drop GLIB_VAR but we need to see how this will
    work on Windows before we go ahead with that.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688681

 glib/gmacros.h        |   16 ++++++++++------
 glib/gtypes.h         |    2 +-
 glib/gutils.h         |    4 ++--
 glib/gversionmacros.h |   38 +++++++++++++++++++-------------------
 gobject/gparamspecs.h |    2 +-
 5 files changed, 33 insertions(+), 29 deletions(-)
---
diff --git a/glib/gmacros.h b/glib/gmacros.h
index 4ad57da..2865910 100644
--- a/glib/gmacros.h
+++ b/glib/gmacros.h
@@ -324,6 +324,10 @@
 #define G_UNAVAILABLE(maj,min)
 #endif
 
+#ifndef _GLIB_EXTERN
+#define _GLIB_EXTERN extern
+#endif
+
 /* These macros are used to mark deprecated functions in GLib headers,
  * and thus have to be exposed in installed headers. But please
  * do *not* use them in other projects. Instead, use G_DEPRECATED
@@ -331,13 +335,13 @@
  */
 
 #ifdef GLIB_DISABLE_DEPRECATION_WARNINGS
-#define GLIB_DEPRECATED
-#define GLIB_DEPRECATED_FOR(f)
-#define GLIB_UNAVAILABLE(maj,min)
+#define GLIB_DEPRECATED _GLIB_EXTERN
+#define GLIB_DEPRECATED_FOR(f) _GLIB_EXTERN
+#define GLIB_UNAVAILABLE(maj,min) _GLIB_EXTERN
 #else
-#define GLIB_DEPRECATED G_DEPRECATED
-#define GLIB_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f)
-#define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min)
+#define GLIB_DEPRECATED G_DEPRECATED _GLIB_EXTERN
+#define GLIB_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GLIB_EXTERN
+#define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _GLIB_EXTERN
 #endif
 
 #endif /* __G_MACROS_H__ */
diff --git a/glib/gtypes.h b/glib/gtypes.h
index 7e4c8ea..1a96838 100644
--- a/glib/gtypes.h
+++ b/glib/gtypes.h
@@ -477,7 +477,7 @@ G_END_DECLS
 #      endif /* !GLIB_COMPILATION */
 #    endif /* !GLIB_STATIC_COMPILATION */
 #  else /* !G_PLATFORM_WIN32 */
-#    define GLIB_VAR extern
+#    define GLIB_VAR _GLIB_EXTERN
 #  endif /* !G_PLATFORM_WIN32 */
 #endif /* GLIB_VAR */
 
diff --git a/glib/gutils.h b/glib/gutils.h
index 71568b0..f9a130b 100644
--- a/glib/gutils.h
+++ b/glib/gutils.h
@@ -74,14 +74,14 @@ G_BEGIN_DECLS
 #  endif
 #endif
 #ifdef G_IMPLEMENT_INLINES
-#  define G_INLINE_FUNC
+#  define G_INLINE_FUNC _GLIB_EXTERN
 #  undef  G_CAN_INLINE
 #elif defined (__GNUC__) 
 #  define G_INLINE_FUNC static __inline __attribute__ ((unused))
 #elif defined (G_CAN_INLINE) 
 #  define G_INLINE_FUNC static inline
 #else /* can't inline */
-#  define G_INLINE_FUNC
+#  define G_INLINE_FUNC _GLIB_EXTERN
 #endif /* !G_INLINE_FUNC */
 
 GLIB_AVAILABLE_IN_ALL
diff --git a/glib/gversionmacros.h b/glib/gversionmacros.h
index 4529153..6cc706c 100644
--- a/glib/gversionmacros.h
+++ b/glib/gversionmacros.h
@@ -184,7 +184,7 @@
  * do *not* use them in other projects. Instead, use G_DEPRECATED
  * or define your own wrappers around it.
  */
-#define GLIB_AVAILABLE_IN_ALL
+#define GLIB_AVAILABLE_IN_ALL                   _GLIB_EXTERN
 
 /* XXX: Every new stable minor release should add a set of macros here */
 
@@ -192,84 +192,84 @@
 # define GLIB_DEPRECATED_IN_2_26                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_26_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_26
-# define GLIB_DEPRECATED_IN_2_26_FOR(f)
+# define GLIB_DEPRECATED_IN_2_26                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_26_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_26
 # define GLIB_AVAILABLE_IN_2_26                 GLIB_UNAVAILABLE(2, 26)
 #else
-# define GLIB_AVAILABLE_IN_2_26
+# define GLIB_AVAILABLE_IN_2_26                 _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_28
 # define GLIB_DEPRECATED_IN_2_28                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_28_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_28
-# define GLIB_DEPRECATED_IN_2_28_FOR(f)
+# define GLIB_DEPRECATED_IN_2_28                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_28_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_28
 # define GLIB_AVAILABLE_IN_2_28                 GLIB_UNAVAILABLE(2, 28)
 #else
-# define GLIB_AVAILABLE_IN_2_28
+# define GLIB_AVAILABLE_IN_2_28                 _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_30
 # define GLIB_DEPRECATED_IN_2_30                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_30_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_30
-# define GLIB_DEPRECATED_IN_2_30_FOR(f)
+# define GLIB_DEPRECATED_IN_2_30                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_30_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_30
 # define GLIB_AVAILABLE_IN_2_30                 GLIB_UNAVAILABLE(2, 30)
 #else
-# define GLIB_AVAILABLE_IN_2_30
+# define GLIB_AVAILABLE_IN_2_30                 _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_32
 # define GLIB_DEPRECATED_IN_2_32                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_32_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_32
-# define GLIB_DEPRECATED_IN_2_32_FOR(f)
+# define GLIB_DEPRECATED_IN_2_32                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_32_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_32
 # define GLIB_AVAILABLE_IN_2_32                 GLIB_UNAVAILABLE(2, 32)
 #else
-# define GLIB_AVAILABLE_IN_2_32
+# define GLIB_AVAILABLE_IN_2_32                 _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_34
 # define GLIB_DEPRECATED_IN_2_34                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_34_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_34
-# define GLIB_DEPRECATED_IN_2_34_FOR(f)
+# define GLIB_DEPRECATED_IN_2_34                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_34_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_34
 # define GLIB_AVAILABLE_IN_2_34                 GLIB_UNAVAILABLE(2, 34)
 #else
-# define GLIB_AVAILABLE_IN_2_34
+# define GLIB_AVAILABLE_IN_2_34                 _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_36
 # define GLIB_DEPRECATED_IN_2_36                GLIB_DEPRECATED
 # define GLIB_DEPRECATED_IN_2_36_FOR(f)         GLIB_DEPRECATED_FOR(f)
 #else
-# define GLIB_DEPRECATED_IN_2_36
-# define GLIB_DEPRECATED_IN_2_36_FOR(f)
+# define GLIB_DEPRECATED_IN_2_36                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_36_FOR(f)         _GLIB_EXTERN
 #endif
 
 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_36
 # define GLIB_AVAILABLE_IN_2_36                 GLIB_UNAVAILABLE(2, 36)
 #else
-# define GLIB_AVAILABLE_IN_2_36
+# define GLIB_AVAILABLE_IN_2_36                 _GLIB_EXTERN
 #endif
 
 #endif /*  __G_VERSION_MACROS_H__ */
diff --git a/gobject/gparamspecs.h b/gobject/gparamspecs.h
index 99093b1..dcab469 100644
--- a/gobject/gparamspecs.h
+++ b/gobject/gparamspecs.h
@@ -1155,7 +1155,7 @@ GParamSpec*	g_param_spec_variant	 (const gchar        *name,
 #      endif /* !GOBJECT_COMPILATION */
 #    endif /* !GOBJECT_STATIC_COMPILATION */
 #  else /* !G_PLATFORM_WIN32 */
-#    define GOBJECT_VAR extern
+#    define GOBJECT_VAR _GLIB_EXTERN
 #  endif /* !G_PLATFORM_WIN32 */
 #endif /* GOBJECT_VAR */
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]