mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 21:54:10 +01:00
lib: abstract bit validity check in bit test/set/clear macros
Reduce duplication in the bit test/set/clear macros. No functional changes.
This commit is contained in:
parent
d7b6e0cae7
commit
41b870fba5
1 changed files with 5 additions and 6 deletions
|
@ -64,15 +64,14 @@ NOTMUCH_BEGIN_DECLS
|
|||
strncmp ((var), (literal), sizeof (literal) - 1)
|
||||
|
||||
/* Robust bit test/set/reset macros */
|
||||
#define _NOTMUCH_VALID_BIT(bit) \
|
||||
((bit) >= 0 && (bit) < CHAR_BIT * sizeof (unsigned long long))
|
||||
#define NOTMUCH_TEST_BIT(val, bit) \
|
||||
(((bit) < 0 || (bit) >= CHAR_BIT * sizeof (unsigned long long)) ? 0 \
|
||||
: !!((val) & (1ull << (bit))))
|
||||
(_NOTMUCH_VALID_BIT(bit) ? !!((val) & (1ull << (bit))) : 0)
|
||||
#define NOTMUCH_SET_BIT(valp, bit) \
|
||||
(((bit) < 0 || (bit) >= CHAR_BIT * sizeof (unsigned long long)) ? *(valp) \
|
||||
: (*(valp) |= (1ull << (bit))))
|
||||
(_NOTMUCH_VALID_BIT(bit) ? (*(valp) |= (1ull << (bit))) : *(valp))
|
||||
#define NOTMUCH_CLEAR_BIT(valp, bit) \
|
||||
(((bit) < 0 || (bit) >= CHAR_BIT * sizeof (unsigned long long)) ? *(valp) \
|
||||
: (*(valp) &= ~(1ull << (bit))))
|
||||
(_NOTMUCH_VALID_BIT(bit) ? (*(valp) &= ~(1ull << (bit))) : *(valp))
|
||||
|
||||
#define unused(x) x __attribute__ ((unused))
|
||||
|
||||
|
|
Loading…
Reference in a new issue