diff options
Diffstat (limited to 'Include/bitset.h')
-rw-r--r-- | Include/bitset.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/Include/bitset.h b/Include/bitset.h index 6a2ac97..faeb419 100644 --- a/Include/bitset.h +++ b/Include/bitset.h @@ -7,15 +7,24 @@ extern "C" { /* Bitset interface */ -#define BYTE char +#define BYTE char + typedef BYTE *bitset; +bitset newbitset(int nbits); +void delbitset(bitset bs); #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0) +int addbit(bitset bs, int ibit); /* Returns 0 if already set */ +int samebitset(bitset bs1, bitset bs2, int nbits); +void mergebitset(bitset bs1, bitset bs2, int nbits); + +#define BITSPERBYTE (8*sizeof(BYTE)) +#define NBYTES(nbits) (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE) -#define BITSPERBYTE (8*sizeof(BYTE)) -#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE) -#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE) -#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit)) +#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE) +#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE) +#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit)) +#define BYTE2BIT(ibyte) ((ibyte) * BITSPERBYTE) #ifdef __cplusplus } |