chiark
/
gitweb
/
~mdw
/
mLib
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various fixes.
[mLib]
/
bits.h
diff --git
a/bits.h
b/bits.h
index 5ce1d9543e703edfc00c727a4783875b04b44324..4f8b582cf8775273decb53f2224f9863b01e21a7 100644
(file)
--- a/
bits.h
+++ b/
bits.h
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-c-*-
*
- * $Id: bits.h,v 1.
7 2000/07/22 09:48:26
mdw Exp $
+ * $Id: bits.h,v 1.
9 2001/01/20 12:05:20
mdw Exp $
*
* Portable bit-level manipulation macros
*
*
* Portable bit-level manipulation macros
*
@@
-30,6
+30,12
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: bits.h,v $
/*----- Revision history --------------------------------------------------*
*
* $Log: bits.h,v $
+ * Revision 1.9 2001/01/20 12:05:20 mdw
+ * New hack for storing 64-bit numbers in tables.
+ *
+ * Revision 1.8 2000/10/08 11:06:30 mdw
+ * Shut later versions of GCC up about use of @long long@.
+ *
* Revision 1.7 2000/07/22 09:48:26 mdw
* Added macros for reading 64-bit values.
*
* Revision 1.7 2000/07/22 09:48:26 mdw
* Added macros for reading 64-bit values.
*
@@
-70,6
+76,14
@@
/*----- Decide on some types ----------------------------------------------*/
/*----- Decide on some types ----------------------------------------------*/
+/* --- Make GNU C shut up --- */
+
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 91)
+# define MLIB_BITS_EXTENSION __extension__
+#else
+# define MLIB_BITS_EXTENSION
+#endif
+
/* --- Decide on a 32-bit type --- *
*
* I want a type which is capable of expressing 32-bit numbers. Because some
/* --- Decide on a 32-bit type --- *
*
* I want a type which is capable of expressing 32-bit numbers. Because some
@@
-96,14
+110,14
@@
#endif
#if UINT_MAX >> 31 > 0xffffffff
#endif
#if UINT_MAX >> 31 > 0xffffffff
-# define HAVE_UINT64
- typedef unsigned int uint64;
+#
define HAVE_UINT64
+
typedef unsigned int uint64;
#elif ULONG_MAX >> 31 > 0xffffffff
#elif ULONG_MAX >> 31 > 0xffffffff
-# define HAVE_UINT64
- typedef unsigned long uint64;
+#
define HAVE_UINT64
+
typedef unsigned long uint64;
#elif defined(ULLONG_MAX)
#elif defined(ULLONG_MAX)
-# define HAVE_UINT64
- typedef unsigned long long uint64;
+#
define HAVE_UINT64
+
MLIB_BITS_EXTENSION
typedef unsigned long long uint64;
#endif
#ifdef DEBUG64
#endif
#ifdef DEBUG64
@@
-148,7
+162,7
@@
typedef unsigned char octet;
#define MASK32 0xffffffffu
#ifdef HAVE_UINT64
#define MASK32 0xffffffffu
#ifdef HAVE_UINT64
-# define MASK64
0xffffffffffffffffull
+# define MASK64
MLIB_BITS_EXTENSION 0xffffffffffffffffu
#endif
/* --- Type coercions --- */
#endif
/* --- Type coercions --- */
@@
-445,6
+459,14
@@
typedef unsigned char octet;
# define ZERO64(x) ((x).lo == 0 && (x).hi == 0)
#endif
# define ZERO64(x) ((x).lo == 0 && (x).hi == 0)
#endif
+/* --- Storing integers in tables --- */
+
+#ifdef HAVE_UINT64
+# define X64(x, y) { 0x##x##y }
+#else
+# define X64(x, y) { 0x##x, 0x##y }
+#endif
+
/*----- That's all, folks -------------------------------------------------*/
#ifdef __cplusplus
/*----- That's all, folks -------------------------------------------------*/
#ifdef __cplusplus