bitmap: add bitmap_unset() function
We've never needed to unset an individual bit in a bitmap until now. Typically they start with all bits unset and we bitmap_set() them, or we are applying another bitmap as a mask. But the easiest way to apply an object filter to a bitmap result will be to unset the individual bits. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
2aaeb9ac41
commit
cc4aa28506
@ -45,6 +45,14 @@ void bitmap_set(struct bitmap *self, size_t pos)
|
|||||||
self->words[block] |= EWAH_MASK(pos);
|
self->words[block] |= EWAH_MASK(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bitmap_unset(struct bitmap *self, size_t pos)
|
||||||
|
{
|
||||||
|
size_t block = EWAH_BLOCK(pos);
|
||||||
|
|
||||||
|
if (block < self->word_alloc)
|
||||||
|
self->words[block] &= ~EWAH_MASK(pos);
|
||||||
|
}
|
||||||
|
|
||||||
int bitmap_get(struct bitmap *self, size_t pos)
|
int bitmap_get(struct bitmap *self, size_t pos)
|
||||||
{
|
{
|
||||||
size_t block = EWAH_BLOCK(pos);
|
size_t block = EWAH_BLOCK(pos);
|
||||||
|
@ -173,6 +173,7 @@ struct bitmap {
|
|||||||
|
|
||||||
struct bitmap *bitmap_new(void);
|
struct bitmap *bitmap_new(void);
|
||||||
void bitmap_set(struct bitmap *self, size_t pos);
|
void bitmap_set(struct bitmap *self, size_t pos);
|
||||||
|
void bitmap_unset(struct bitmap *self, size_t pos);
|
||||||
int bitmap_get(struct bitmap *self, size_t pos);
|
int bitmap_get(struct bitmap *self, size_t pos);
|
||||||
void bitmap_reset(struct bitmap *self);
|
void bitmap_reset(struct bitmap *self);
|
||||||
void bitmap_free(struct bitmap *self);
|
void bitmap_free(struct bitmap *self);
|
||||||
|
Loading…
Reference in New Issue
Block a user