blob: 8dccdf738a38e9a4e0a32509037b9d8a63f5884f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#ifdef UINT64_MAX
typedef uint64_t bitvec_slot_t;
#else
typedef uint32_t bitvec_slot_t;
#endif
struct bitvec {
size_t cap;
bitvec_slot_t *data;
};
int bitvec_init(struct bitvec *vec, size_t cap);
void bitvec_deinit(struct bitvec *vec);
int bitvec_alloc(struct bitvec **vec, size_t cap);
void bitvec_free(struct bitvec *vec);
int bitvec_reserve(struct bitvec *vec, size_t cnt);
int bitvec_shrink(struct bitvec *vec, size_t cnt);
bool bitvec_get(struct bitvec *vec, size_t pos);
void bitvec_set(struct bitvec *vec, size_t pos);
void bitvec_clear(struct bitvec *vec, size_t pos);
void bitvec_setn(struct bitvec *vec, size_t start, size_t end, bool set);
|