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