diff options
author | David Robillard <d@drobilla.net> | 2021-09-10 20:47:36 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-09-10 20:54:28 -0400 |
commit | 592961cc6b6c92ba6af2c30d01aa4f2a00955b68 (patch) | |
tree | fcb4e10c25acf7a33a4290c7e3c5ab2a5711bb5d /src | |
parent | 731ce39ef6fa35f64c19947bdb1719028478fdb9 (diff) | |
download | zix-592961cc6b6c92ba6af2c30d01aa4f2a00955b68.tar.gz zix-592961cc6b6c92ba6af2c30d01aa4f2a00955b68.tar.bz2 zix-592961cc6b6c92ba6af2c30d01aa4f2a00955b68.zip |
Remove branches from zix_bitset_set() and zix_bitset_reset()
Diffstat (limited to 'src')
-rw-r--r-- | src/bitset.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/bitset.c b/src/bitset.c index e818225..2779de6 100644 --- a/src/bitset.c +++ b/src/bitset.c @@ -45,28 +45,24 @@ zix_bitset_clear(ZixBitset* b, ZixBitsetTally* t, size_t n_bits) void zix_bitset_set(ZixBitset* b, ZixBitsetTally* t, size_t i) { - const size_t e = i / ZIX_BITSET_ELEM_BIT; - const size_t ebit = i & (ZIX_BITSET_ELEM_BIT - 1); // i % ELEM_BIT - const ZixBitset mask = (ZixBitset)1 << ebit; - - if (!(b[e] & mask)) { - ++t[e]; - } + const size_t e = i / ZIX_BITSET_ELEM_BIT; + const size_t ebit = i & (ZIX_BITSET_ELEM_BIT - 1); // i % ELEM_BIT + const ZixBitset mask = (ZixBitset)1 << ebit; + const bool is_set = (b[e] & mask); + t[e] = (ZixBitsetTally)(t[e] + !is_set); b[e] |= mask; } void zix_bitset_reset(ZixBitset* b, ZixBitsetTally* t, size_t i) { - const size_t e = i / ZIX_BITSET_ELEM_BIT; - const size_t ebit = i & (ZIX_BITSET_ELEM_BIT - 1); // i % ELEM_BIT - const ZixBitset mask = (ZixBitset)1 << ebit; - - if (b[e] & mask) { - --t[e]; - } + const size_t e = i / ZIX_BITSET_ELEM_BIT; + const size_t ebit = i & (ZIX_BITSET_ELEM_BIT - 1); // i % ELEM_BIT + const ZixBitset mask = (ZixBitset)1 << ebit; + const bool is_set = b[e] & mask; + t[e] = (ZixBitsetTally)(t[e] - is_set); b[e] &= ~mask; } |