Home | History | Annotate | Download | only in Include
      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