From 1a3648688fc6b1b20bbc52b2f36bb0d5b89fe379 Mon Sep 17 00:00:00 2001 From: Manish Singh Date: Tue, 20 Oct 1998 10:43:39 +0000 Subject: [PATCH] configure.in added test for endianness * configure.in * acconfig.h: added test for endianness * glib.h: #define endian macros for system and some conversions between byte order -Yosh --- ChangeLog | 8 ++++++++ ChangeLog.pre-2-0 | 8 ++++++++ ChangeLog.pre-2-10 | 8 ++++++++ ChangeLog.pre-2-12 | 8 ++++++++ ChangeLog.pre-2-2 | 8 ++++++++ ChangeLog.pre-2-4 | 8 ++++++++ ChangeLog.pre-2-6 | 8 ++++++++ ChangeLog.pre-2-8 | 8 ++++++++ configure.in | 2 ++ glib.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ glib/glib.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ glibconfig.h.in | 4 ++++ 12 files changed, 166 insertions(+) diff --git a/ChangeLog b/ChangeLog index 505ad56..9bde88d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 505ad56..9bde88d 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +Tue Oct 20 03:32:58 PDT 1998 Manish Singh + + * configure.in + * acconfig.h: added test for endianness + + * glib.h: #define endian macros for system and some conversions + between byte order + Thu Oct 8 06:47:27 1998 Tim Janik * glib.h: diff --git a/configure.in b/configure.in index bd97807..4ee4d47 100644 --- a/configure.in +++ b/configure.in @@ -213,6 +213,8 @@ case x$glib_cv_hasinline in xyes) AC_DEFINE(G_HAVE_INLINE) esac +dnl for bytesex stuff +AC_C_BIGENDIAN dnl header file checks AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H)) diff --git a/glib.h b/glib.h index fda3fed..3f668f7 100644 --- a/glib.h +++ b/glib.h @@ -455,6 +455,54 @@ extern "C" { #endif /* !G_DISABLE_CHECKS */ +/* Portable endian checks and conversions + */ + +#define G_LITTLE_ENDIAN 1234 +#define G_BIG_ENDIAN 4321 +#define G_PDP_ENDIAN 3412 / /* unused, need specific PDP check */ + +#ifdef WORDS_BIGENDIAN +#define G_BYTE_ORDER G_BIG_ENDIAN +#else +#define G_BYTE_ORDER G_LITTLE_ENDIAN +#endif + +#define GULONG_SWAP_LE_BE(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x000000ffU) << 24) | \ + (((gulong) (long_val)) & 0x0000ff00U) << 8) | \ + (((gulong) (long_val)) & 0x00ff0000U) >> 8) | \ + (((gulong) (long_val)) & 0xff000000U) >> 24))) +#define GULONG_SWAP_LE_PDP(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x0000ffffU) << 16) | \ + (((gulong) (long_val)) & 0xffff0000U) >> 16))) +#define GULONG_SWAP_BE_PDP(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x000000ffU) << 8) | \ + (((gulong) (long_val)) & 0x0000ff00U) >> 8) | \ + (((gulong) (long_val)) & 0x00ff0000U) << 8) | \ + (((gulong) (long_val)) & 0xff000000U) >> 8))) + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN +# define GLONG_TO_LE(long_val) ((glong) (long_val)) +# define GULONG_TO_LE(long_val) ((gulong) (long_val)) +# define GLONG_TO_BE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_TO_BE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_FROM_LE(long_val) ((glong) (long_val)) +# define GULONG_FROM_LE(long_val) ((gulong) (long_val)) +# define GLONG_FROM_BE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_FROM_BE(long_val) (GULONG_SWAP_LE_BE (long_val)) +#elif G_BYTE_ORDER == G_BIG_ENDIAN +# define GLONG_TO_LE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_TO_LE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_TO_BE(long_val) ((glong) (long_val)) +# define GULONG_TO_BE(long_val) ((gulong) (long_val)) +# define GLONG_FROM_LE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_FROM_LE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_FROM_BE(long_val) ((glong) (long_val)) +# define GULONG_FROM_BE(long_val) ((gulong) (long_val)) +#endif + + /* Provide type definitions for commonly used types. * These are useful because a "gint8" can be adjusted * to be 1 byte (8 bits) on all platforms. Similarly and diff --git a/glib/glib.h b/glib/glib.h index fda3fed..3f668f7 100644 --- a/glib/glib.h +++ b/glib/glib.h @@ -455,6 +455,54 @@ extern "C" { #endif /* !G_DISABLE_CHECKS */ +/* Portable endian checks and conversions + */ + +#define G_LITTLE_ENDIAN 1234 +#define G_BIG_ENDIAN 4321 +#define G_PDP_ENDIAN 3412 / /* unused, need specific PDP check */ + +#ifdef WORDS_BIGENDIAN +#define G_BYTE_ORDER G_BIG_ENDIAN +#else +#define G_BYTE_ORDER G_LITTLE_ENDIAN +#endif + +#define GULONG_SWAP_LE_BE(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x000000ffU) << 24) | \ + (((gulong) (long_val)) & 0x0000ff00U) << 8) | \ + (((gulong) (long_val)) & 0x00ff0000U) >> 8) | \ + (((gulong) (long_val)) & 0xff000000U) >> 24))) +#define GULONG_SWAP_LE_PDP(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x0000ffffU) << 16) | \ + (((gulong) (long_val)) & 0xffff0000U) >> 16))) +#define GULONG_SWAP_BE_PDP(long_val) (((gulong) \ + (((gulong) (long_val)) & 0x000000ffU) << 8) | \ + (((gulong) (long_val)) & 0x0000ff00U) >> 8) | \ + (((gulong) (long_val)) & 0x00ff0000U) << 8) | \ + (((gulong) (long_val)) & 0xff000000U) >> 8))) + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN +# define GLONG_TO_LE(long_val) ((glong) (long_val)) +# define GULONG_TO_LE(long_val) ((gulong) (long_val)) +# define GLONG_TO_BE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_TO_BE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_FROM_LE(long_val) ((glong) (long_val)) +# define GULONG_FROM_LE(long_val) ((gulong) (long_val)) +# define GLONG_FROM_BE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_FROM_BE(long_val) (GULONG_SWAP_LE_BE (long_val)) +#elif G_BYTE_ORDER == G_BIG_ENDIAN +# define GLONG_TO_LE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_TO_LE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_TO_BE(long_val) ((glong) (long_val)) +# define GULONG_TO_BE(long_val) ((gulong) (long_val)) +# define GLONG_FROM_LE(long_val) ((glong) GULONG_SWAP_LE_BE (long_val)) +# define GULONG_FROM_LE(long_val) (GULONG_SWAP_LE_BE (long_val)) +# define GLONG_FROM_BE(long_val) ((glong) (long_val)) +# define GULONG_FROM_BE(long_val) ((gulong) (long_val)) +#endif + + /* Provide type definitions for commonly used types. * These are useful because a "gint8" can be adjusted * to be 1 byte (8 bits) on all platforms. Similarly and diff --git a/glibconfig.h.in b/glibconfig.h.in index aef9bd0..4d0715f 100644 --- a/glibconfig.h.in +++ b/glibconfig.h.in @@ -12,6 +12,10 @@ /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + #undef ENABLE_MEM_CHECK #undef ENABLE_MEM_PROFILE -- 2.7.4