1.1 --- a/types.c Fri Feb 15 15:08:38 2008 -0500
1.2 +++ b/types.c Mon Mar 10 14:12:31 2008 -0400
1.3 @@ -244,3 +244,28 @@
1.4
1.5 return hashtable_insert(table, string);
1.6 }
1.7 +
1.8 +
1.9 +void
1.10 +bitarray_init(struct bitarray *bitarray, int size, int initial_value)
1.11 +{
1.12 + int bytes = ((size + 31) / 32) * 4;
1.13 +
1.14 + bitarray->bits = malloc(bytes);
1.15 + memset(bitarray->bits, initial_value ? 0xff : 0x00, bytes);
1.16 +}
1.17 +
1.18 +void
1.19 +bitarray_set(struct bitarray *bitarray, int bit, int value)
1.20 +{
1.21 + if (value)
1.22 + bitarray->bits[bit >> 5] |= 1 << (bit & 31);
1.23 + else
1.24 + bitarray->bits[bit >> 5] &= ~(1 << (bit & 31));
1.25 +}
1.26 +
1.27 +int
1.28 +bitarray_get(struct bitarray *bitarray, int bit)
1.29 +{
1.30 + return (bitarray->bits[bit >> 5] & (1 << (bit & 31))) != 0;
1.31 +}