Skip to content

Commit

Permalink
ewah: implement bitmap_is_empty()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
ttaylorr authored and gitster committed Dec 14, 2023
1 parent dab6093 commit e5d48bf
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
9 changes: 9 additions & 0 deletions ewah/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions ewah/ewok.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit e5d48bf

Please sign in to comment.