libbitvec-c

C bit vector library
git clone https://git.sinitax.com/sinitax/libbitvec-c
Log | Files | Refs | LICENSE | sfeed.txt

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);