flags.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*====================================================================*
  2. *
  3. * flags.h - bitmap flagword definitions and declarations;
  4. *
  5. * Motley Tools by Charles Maier;
  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