flags.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*====================================================================*
  2. *
  3. * flags.h - bitmap flagword definitions and declarations;
  4. *
  5. * Motley Tools by Charles Maier <cmaier@cmassoc.net>;
  6. * Copyright 2001-2006 by Charles Maier Associates;
  7. * Licensed under the Internet Software Consortium License;
  8. *
  9. *--------------------------------------------------------------------*/
  10. #ifndef FLAGS_HEADER
  11. #define FLAGS_HEADER
  12. /*====================================================================*
  13. * system header files;
  14. *--------------------------------------------------------------------*/
  15. #include <stdint.h>
  16. /*====================================================================*
  17. * define macros for common, but error prone, bitmap operations;
  18. *--------------------------------------------------------------------*/
  19. #define _bits(object) (sizeof (object) << 3)
  20. #define _getbits(map,pos,cnt) (((map)>>((pos)-(cnt)+1))&~(~(0)<<(cnt)))
  21. #define _bitmask(bits) ~(~(0) << bits)
  22. #define _setbits(flag,mask) flag |= (mask)
  23. #define _clrbits(flag,mask) flag &= ~(mask)
  24. #define _toggle(flag,mask) flag = ~(flag) & ~(mask)
  25. #define _anyset(flag,mask) ((flag) & (mask)) != (0)
  26. #define _anyclr(flag,mask) ((flag) & (mask)) != (mask)
  27. #define _allset(flag,mask) ((flag) & (mask)) == (mask)
  28. #define _allclr(flag,mask) ((flag) & (mask)) == (0)
  29. // #define _notset(flag,mask) ((flag) & (mask)) == (0)
  30. #define _anybits(flag,mask) ((flag) & (mask)) != (0)
  31. #define _allbits(flag,mask) ((flag) & (mask)) == (mask)
  32. #define _clean(flag,mask) ((flag) & ~(mask)) == (0)
  33. #define _dirty(flag,mask) ((flag) & ~(mask)) != (0)
  34. /*====================================================================*
  35. *
  36. *--------------------------------------------------------------------*/
  37. void set32bitmap (uint32_t * map, unsigned bit);
  38. void clr32bitmap (uint32_t * map, unsigned bit);
  39. /*====================================================================*
  40. * end definitions and declarations;
  41. *--------------------------------------------------------------------*/
  42. #endif