diff options
author | Taylor Blau <me@ttaylorr.com> | 2023-12-15 01:23:59 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-12-15 01:38:07 +0300 |
commit | e5d48bf38bc0e1f44f4daa7c8e0f75cd9296d020 (patch) | |
tree | 24cc1a25935239a3e8bec52f97f31c869f3faf11 /ewah | |
parent | dab60934e3057642453bcc6153af076cbcac0d47 (diff) |
ewah: implement `bitmap_is_empty()`
In a future commit, we will want to check whether or not a bitmap has
any bits set in any of its words. The best way to do this (prior to the
existence of this patch) is to call `bitmap_popcount()` and check
whether the result is non-zero.
But this is semi-wasteful, since we do not need to know the exact number
of bits set, only whether or not there is at least one of them.
Implement a new helper function to check just that.
Suggested-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ewah')
-rw-r--r-- | ewah/bitmap.c | 9 | ||||
-rw-r--r-- | ewah/ewok.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/ewah/bitmap.c b/ewah/bitmap.c index 7b525b1ecd..ac7e0af622 100644 --- a/ewah/bitmap.c +++ b/ewah/bitmap.c @@ -169,6 +169,15 @@ size_t bitmap_popcount(struct bitmap *self) return count; } +int bitmap_is_empty(struct bitmap *self) +{ + size_t i; + for (i = 0; i < self->word_alloc; i++) + if (self->words[i]) + return 0; + return 1; +} + int bitmap_equals(struct bitmap *self, struct bitmap *other) { struct bitmap *big, *small; diff --git a/ewah/ewok.h b/ewah/ewok.h index 7eb8b9b630..c11d76c6f3 100644 --- a/ewah/ewok.h +++ b/ewah/ewok.h @@ -189,5 +189,6 @@ void bitmap_or_ewah(struct bitmap *self, struct ewah_bitmap *other); void bitmap_or(struct bitmap *self, const struct bitmap *other); size_t bitmap_popcount(struct bitmap *self); +int bitmap_is_empty(struct bitmap *self); #endif |