chiark / gitweb /
url: Allow `;' to separate key/value pairs in URL-encoded strings.
[mLib] / bits.h
diff --git a/bits.h b/bits.h
index b895dd4..0f7ba0b 100644 (file)
--- a/bits.h
+++ b/bits.h
  */
 
 typedef unsigned short uint16;
-typedef unsigned char octet;
+typedef unsigned char octet, uint8;
 
 /* --- WARNING! --- *
  *
@@ -126,17 +126,19 @@ typedef unsigned char octet;
 
 #define MASK8 0xffu
 #define MASK16 0xffffu
-#define MASK16_L 0xffffu
-#define MASK16_B 0xffffu
+#define MASK16_L MASK16
+#define MASK16_B MASK16
 #define MASK24 0xffffffu
-#define MASK24_L 0xffffffu
-#define MASK24_B 0xffffffu
+#define MASK24_L MASK24
+#define MASK24_B MASK24
 #define MASK32 0xffffffffu
-#define MASK32_L 0xffffffffu
-#define MASK32_B 0xffffffffu
+#define MASK32_L MASK32
+#define MASK32_B MASK32
 
 #ifdef HAVE_UINT64
 #  define MASK64 MLIB_BITS_EXTENSION 0xffffffffffffffffu
+#  define MASK64_L MASK64
+#  define MASK64_B MASK64
 #endif
 
 /* --- Sizes --- */
@@ -152,6 +154,50 @@ typedef unsigned char octet;
 #define SZ_32_L 4
 #define SZ_32_B 4
 
+#ifdef HAVE_UINT64
+#  define SZ_64 8
+#  define SZ_64_L 8
+#  define SZ_64_B 8
+#endif
+
+/* --- Type aliases --- */
+
+#define TY_U8 octet
+#define TY_U16 uint16
+#define TY_U16_L uint16
+#define TY_U16_B uint16
+#define TY_U24 uint24
+#define TY_U24_L uint24
+#define TY_U24_B uint24
+#define TY_U32 uint32
+#define TY_U32_L uint32
+#define TY_U32_B uint32
+
+#ifdef HAVE_UINT64
+#  define TY_U64 uint64
+#  define TY_U64_L uint64
+#  define TY_U64_B uint64
+#endif
+
+/* --- List macros --- */
+
+#ifdef HAVE_UINT64
+#  define  DOUINTCONV(_)                                               \
+     _(8, 8, 8)                                                                \
+     _(16, 16, 16) _(16, 16_L, 16l) _(16, 16_B, 16b)                   \
+     _(24, 24, 24) _(24, 24_L, 24l) _(24, 24_B, 24b)                   \
+     _(32, 32, 32) _(32, 32_L, 32l) _(32, 32_B, 32b)                   \
+     _(64, 64, 64) _(64, 64_L, 64l) _(64, 64_B, 64b)
+#  define DOUINTSZ(_) _(8) _(16) _(24) _(32) _(64)
+#else
+#  define  DOUINTCONV(_)                                               \
+     _(8, 8, 8)                                                                \
+     _(16, 16, 16) _(16, 16_L, 16l) _(16, 16_B, 16b)                   \
+     _(24, 24, 24) _(24, 24_L, 24l) _(24, 24_B, 24b)                   \
+     _(32, 32, 32) _(32, 32_L, 32l) _(32, 32_B, 32b)
+#  define DOUINTSZ(_) _(8) _(16) _(24) _(32)
+#endif
+
 /* --- Type coercions --- */
 
 #define U8(x) ((octet)((x) & MASK8))