12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /*====================================================================*
- *
- * flags.h - bitmap flagword definitions and declarations;
- *
- * Motley Tools by Charles Maier;
- * Copyright 2001-2006 by Charles Maier Associates;
- * Licensed under the Internet Software Consortium License;
- *
- *--------------------------------------------------------------------*/
- #ifndef FLAGS_HEADER
- #define FLAGS_HEADER
- /*====================================================================*
- * system header files;
- *--------------------------------------------------------------------*/
- #include <stdint.h>
- /*====================================================================*
- * define macros for common, but error prone, bitmap operations;
- *--------------------------------------------------------------------*/
- #define _bits(object) (sizeof (object) << 3)
- #define _getbits(map,pos,cnt) (((map)>>((pos)-(cnt)+1))&~(~(0)<<(cnt)))
- #define _bitmask(bits) (~(~(0) << bits))
- #define _setbits(flag,mask) (flag |= (mask))
- #define _clrbits(flag,mask) (flag &= ~(mask))
- #define _toggle(flag,mask) (flag = ~(flag) & ~(mask))
- #define _anyset(flag,mask) (((flag) & (mask)) != (0))
- #define _anyclr(flag,mask) (((flag) & (mask)) != (mask))
- #define _allset(flag,mask) (((flag) & (mask)) == (mask))
- #define _allclr(flag,mask) (((flag) & (mask)) == (0))
- // #define _notset(flag,mask) ((flag) & (mask)) == (0)
- #define _anybits(flag,mask) (((flag) & (mask)) != (0))
- #define _allbits(flag,mask) (((flag) & (mask)) == (mask))
- #define _clean(flag,mask) (((flag) & ~(mask)) == (0))
- #define _dirty(flag,mask) (((flag) & ~(mask)) != (0))
- /*====================================================================*
- *
- *--------------------------------------------------------------------*/
- void set32bitmap (uint32_t * map, unsigned bit);
- void clr32bitmap (uint32_t * map, unsigned bit);
- /*====================================================================*
- * end definitions and declarations;
- *--------------------------------------------------------------------*/
- #endif
|