1  
2  #ifndef Py_BITSET_H
3  #define Py_BITSET_H
4  #ifdef __cplusplus
5  extern "C" {
6  #endif
7  
8  /* Bitset interface */
9  
10  #define BYTE		char
11  
12  typedef BYTE *bitset;
13  
14  bitset newbitset(int nbits);
15  void delbitset(bitset bs);
16  #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
17  int addbit(bitset bs, int ibit); /* Returns 0 if already set */
18  int samebitset(bitset bs1, bitset bs2, int nbits);
19  void mergebitset(bitset bs1, bitset bs2, int nbits);
20  
21  #define BITSPERBYTE	(8*sizeof(BYTE))
22  #define NBYTES(nbits)	(((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
23  
24  #define BIT2BYTE(ibit)	((ibit) / BITSPERBYTE)
25  #define BIT2SHIFT(ibit)	((ibit) % BITSPERBYTE)
26  #define BIT2MASK(ibit)	(1 << BIT2SHIFT(ibit))
27  #define BYTE2BIT(ibyte)	((ibyte) * BITSPERBYTE)
28  
29  #ifdef __cplusplus
30  }
31  #endif
32  #endif /* !Py_BITSET_H */
33