hook gvariant vectors up to kdbus
[platform/upstream/glib.git] / glib / gtypes.h
index 8e77563..0e73b40 100644 (file)
@@ -12,9 +12,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
 
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
 #ifndef __G_TYPES_H__
 #define __G_TYPES_H__
 
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
 #include <glibconfig.h>
 #include <glib/gmacros.h>
+#include <glib/gversionmacros.h>
 #include <time.h>
 
 G_BEGIN_DECLS
@@ -180,10 +179,16 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
 /* Arch specific stuff for speed
  */
 #if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
+
+#  if __GNUC__ >= 4 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 3
+#    define GUINT32_SWAP_LE_BE(val) ((guint32) __builtin_bswap32 ((gint32) (val)))
+#    define GUINT64_SWAP_LE_BE(val) ((guint64) __builtin_bswap64 ((gint64) (val)))
+#  endif
+
 #  if defined (__i386__)
 #    define GUINT16_SWAP_LE_BE_IA32(val) \
        (G_GNUC_EXTENSION                                       \
-       ({ register guint16 __v, __x = ((guint16) (val));       \
+       ({ guint16 __v, __x = ((guint16) (val));                \
           if (__builtin_constant_p (__x))                      \
             __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);           \
           else                                                 \
@@ -197,7 +202,7 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
        && !defined (__pentiumpro__) && !defined (__pentium4__)
 #       define GUINT32_SWAP_LE_BE_IA32(val) \
          (G_GNUC_EXTENSION                                     \
-          ({ register guint32 __v, __x = ((guint32) (val));    \
+          ({ guint32 __v, __x = ((guint32) (val));             \
              if (__builtin_constant_p (__x))                   \
                __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);        \
              else                                              \
@@ -211,7 +216,7 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
 #    else /* 486 and higher has bswap */
 #       define GUINT32_SWAP_LE_BE_IA32(val) \
          (G_GNUC_EXTENSION                                     \
-          ({ register guint32 __v, __x = ((guint32) (val));    \
+          ({ guint32 __v, __x = ((guint32) (val));             \
              if (__builtin_constant_p (__x))                   \
                __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);        \
              else                                              \
@@ -235,12 +240,16 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
           __r.__ll; }))
      /* Possibly just use the constant version and let gcc figure it out? */
 #    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA32 (val))
-#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA32 (val))
-#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA32 (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA32 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA32 (val))
+#    endif
 #  elif defined (__ia64__)
 #    define GUINT16_SWAP_LE_BE_IA64(val) \
        (G_GNUC_EXTENSION                                       \
-       ({ register guint16 __v, __x = ((guint16) (val));       \
+       ({ guint16 __v, __x = ((guint16) (val));                \
           if (__builtin_constant_p (__x))                      \
             __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);           \
           else                                                 \
@@ -251,7 +260,7 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
            __v; }))
 #    define GUINT32_SWAP_LE_BE_IA64(val) \
        (G_GNUC_EXTENSION                                       \
-        ({ register guint32 __v, __x = ((guint32) (val));      \
+        ({ guint32 __v, __x = ((guint32) (val));               \
            if (__builtin_constant_p (__x))                     \
              __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);          \
            else                                                \
@@ -262,7 +271,7 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
            __v; }))
 #    define GUINT64_SWAP_LE_BE_IA64(val) \
        (G_GNUC_EXTENSION                                       \
-       ({ register guint64 __v, __x = ((guint64) (val));       \
+       ({ guint64 __v, __x = ((guint64) (val));                \
           if (__builtin_constant_p (__x))                      \
             __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);           \
           else                                                 \
@@ -271,12 +280,16 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
                                   : "r" (__x));                \
           __v; }))
 #    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA64 (val))
-#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val))
-#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val))
+#    endif
 #  elif defined (__x86_64__)
 #    define GUINT32_SWAP_LE_BE_X86_64(val) \
        (G_GNUC_EXTENSION                                       \
-        ({ register guint32 __v, __x = ((guint32) (val));      \
+        ({ guint32 __v, __x = ((guint32) (val));               \
            if (__builtin_constant_p (__x))                     \
              __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);          \
            else                                                \
@@ -286,7 +299,7 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
            __v; }))
 #    define GUINT64_SWAP_LE_BE_X86_64(val) \
        (G_GNUC_EXTENSION                                       \
-       ({ register guint64 __v, __x = ((guint64) (val));       \
+       ({ guint64 __v, __x = ((guint64) (val));                \
           if (__builtin_constant_p (__x))                      \
             __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);           \
           else                                                 \
@@ -296,12 +309,20 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
           __v; }))
      /* gcc seems to figure out optimal code for this on its own */
 #    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
-#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val))
-#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val))
+#    endif
 #  else /* generic gcc */
 #    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
-#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
-#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
+#    endif
 #  endif
 #else /* generic */
 #  define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
@@ -454,7 +475,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 */