ewah: add bitmap_dup() function
There's no easy way to make a copy of a bitmap. Obviously a caller can iterate over the bits and set them one by one in a new bitmap, but we can go much faster by copying whole words with memcpy(). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3ed675101a
commit
ccae08e822
@ -35,6 +35,13 @@ struct bitmap *bitmap_new(void)
|
||||
return bitmap_word_alloc(32);
|
||||
}
|
||||
|
||||
struct bitmap *bitmap_dup(const struct bitmap *src)
|
||||
{
|
||||
struct bitmap *dst = bitmap_word_alloc(src->word_alloc);
|
||||
COPY_ARRAY(dst->words, src->words, src->word_alloc);
|
||||
return dst;
|
||||
}
|
||||
|
||||
static void bitmap_grow(struct bitmap *self, size_t word_alloc)
|
||||
{
|
||||
size_t old_size = self->word_alloc;
|
||||
|
@ -173,6 +173,7 @@ struct bitmap {
|
||||
|
||||
struct bitmap *bitmap_new(void);
|
||||
struct bitmap *bitmap_word_alloc(size_t word_alloc);
|
||||
struct bitmap *bitmap_dup(const struct bitmap *src);
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user