/* * category: [data structure] * apply status: framework * edit status: not * build status: windows&linux * description: */ #ifndef BITARRAY_H #define BITARRAY_H #pragma once #include "config.h" #ifdef __cplusplus extern "C" { #endif typedef struct bitarray_t bitarray_t; struct bitarray_t { int nelts; int nalloc; int *bits; }; /** * make bitarray */ TOOLKIT_API bitarray_t* bitarray_make(int nelts); TOOLKIT_API void bitarray_free(bitarray_t *arr); TOOLKIT_API int bitarray_empty(bitarray_t *arr); TOOLKIT_API void bitarray_push(bitarray_t *arr, int v); TOOLKIT_API int bitarray_pop(bitarray_t *arr); TOOLKIT_API void bitarray_clear(bitarray_t *arr); TOOLKIT_API void bitarray_cat(bitarray_t *dst, const bitarray_t *src); TOOLKIT_API bitarray_t * bitarray_copy(const bitarray_t *arr); TOOLKIT_API void bitarray_reserve(bitarray_t *arr, int cnt); TOOLKIT_API void bitarray_set(bitarray_t *arr, int pos, int v); TOOLKIT_API int bitarray_get(const bitarray_t *arr, int pos); TOOLKIT_API void bitarray_flip(const bitarray_t *arr, int pos); #ifdef __cplusplus } // extern "C" { #endif #endif // BITARRAY_H