From e3b2d7177c25319e62674efe20ae3be2f9794b37 Mon Sep 17 00:00:00 2001 From: norly Date: Sun, 14 Jul 2019 14:46:57 +0200 Subject: [PATCH] Generalise bitfield fully --- lookup-incoming.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lookup-incoming.c b/lookup-incoming.c index 8223feb..da21f44 100644 --- a/lookup-incoming.c +++ b/lookup-incoming.c @@ -10,11 +10,13 @@ typedef __uint32_t bitfield_type; +#define BITS_PER_BITFIELD 32 +#define BITS_PER_BITFIELD_LOG 5 #define BIT_SET(set, d) \ - ( (void) ( set[d >> 5] |= (1 << (d & 31)) ) ) + ( (void) ( set[d >> BITS_PER_BITFIELD_LOG] |= (1 << (d & (BITS_PER_BITFIELD-1))) ) ) #define BIT_ISSET(set, d) \ - (!(! ( set[d >> 5] & (1 << (d & 31)) ) )) + (!(! ( set[d >> BITS_PER_BITFIELD_LOG] & (1 << (d & (BITS_PER_BITFIELD-1))) ) )) int ANY_BITS_SET(bitfield_type *set, size_t elems) { @@ -191,7 +193,7 @@ int main(int argc, char **argv) printf("\n\n\n\nBuilding table of distances...\n\n"); - titles_bitfield_elems = ROUNDUP(titles / 8 / sizeof(bitfield_type), sizeof(bitfield_type)); + titles_bitfield_elems = ROUNDUP(titles / BITS_PER_BITFIELD, BITS_PER_BITFIELD); titles_bitfield_bytes = titles_bitfield_elems * sizeof(bitfield_type); titles_seen = calloc(titles_bitfield_bytes, 1); -- 2.30.2