123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*====================================================================*
- *
- * flags.h - bitmap flagword definitions and declarations;
- *
- * Motley Tools by Charles Maier <cmaier@cmassoc.net>;
- * 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
|