Back to index

python3.2  3.2.2
bitset.h
Go to the documentation of this file.
00001 
00002 #ifndef Py_BITSET_H
00003 #define Py_BITSET_H
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 /* Bitset interface */
00009 
00010 #define BYTE         char
00011 
00012 typedef BYTE *bitset;
00013 
00014 bitset newbitset(int nbits);
00015 void delbitset(bitset bs);
00016 #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
00017 int addbit(bitset bs, int ibit); /* Returns 0 if already set */
00018 int samebitset(bitset bs1, bitset bs2, int nbits);
00019 void mergebitset(bitset bs1, bitset bs2, int nbits);
00020 
00021 #define BITSPERBYTE  (8*sizeof(BYTE))
00022 #define NBYTES(nbits)       (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
00023 
00024 #define BIT2BYTE(ibit)      ((ibit) / BITSPERBYTE)
00025 #define BIT2SHIFT(ibit)     ((ibit) % BITSPERBYTE)
00026 #define BIT2MASK(ibit)      (1 << BIT2SHIFT(ibit))
00027 #define BYTE2BIT(ibyte)     ((ibyte) * BITSPERBYTE)
00028 
00029 #ifdef __cplusplus
00030 }
00031 #endif
00032 #endif /* !Py_BITSET_H */