summaryrefslogtreecommitdiffstats
path: root/Include/bitset.h
diff options
context:
space:
mode:
Diffstat (limited to 'Include/bitset.h')
-rw-r--r--Include/bitset.h19
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
}