home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / Python2 / Python20_source / Include / bitset.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-25  |  857 b   |  37 lines

  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. #ifdef _AMIGA
  11. #include <exec/types.h>
  12. #else /* !_AMIGA */
  13. #define BYTE        char
  14. #endif
  15.  
  16. typedef BYTE *bitset;
  17.  
  18. bitset newbitset(int nbits);
  19. void delbitset(bitset bs);
  20. #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
  21. int addbit(bitset bs, int ibit); /* Returns 0 if already set */
  22. int samebitset(bitset bs1, bitset bs2, int nbits);
  23. void mergebitset(bitset bs1, bitset bs2, int nbits);
  24.  
  25. #define BITSPERBYTE    (8*sizeof(BYTE))
  26. #define NBYTES(nbits)    (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
  27.  
  28. #define BIT2BYTE(ibit)    ((ibit) / BITSPERBYTE)
  29. #define BIT2SHIFT(ibit)    ((ibit) % BITSPERBYTE)
  30. #define BIT2MASK(ibit)    (1 << BIT2SHIFT(ibit))
  31. #define BYTE2BIT(ibyte)    ((ibyte) * BITSPERBYTE)
  32.  
  33. #ifdef __cplusplus
  34. }
  35. #endif
  36. #endif /* !Py_BITSET_H */
  37.