38 #ifndef _LIBUTIL_BITVEC_H_ 39 #define _LIBUTIL_BITVEC_H_ 44 #include <sphinxbase/sphinxbase_export.h> 64 #define BITVEC_BITS 32 65 typedef uint32 bitvec_t;
70 #define bitvec_size(n) (((n)+BITVEC_BITS-1)/BITVEC_BITS) 75 #define bitvec_alloc(n) ckd_calloc(bitvec_size(n), sizeof(bitvec_t)) 87 #define bitvec_free(v) ckd_free(v) 95 #define bitvec_set(v,b) (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1)))) 103 #define bitvec_set_all(v,n) memset(v, (bitvec_t)-1, \ 104 (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \ 112 #define bitvec_clear(v,b) (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1)))) 120 #define bitvec_clear_all(v,n) memset(v, 0, (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \ 129 #define bitvec_is_set(v,b) (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1)))) 137 #define bitvec_is_clear(v,b) (! (bitvec_is_set(v,b))) Sphinx's memory allocation/deallocation routines.
Basic type definitions used in Sphinx.
SPHINXBASE_EXPORT size_t bitvec_count_set(bitvec_t *vec, size_t len)
Return the number of bits set in the given bitvector.
SPHINXBASE_EXPORT bitvec_t * bitvec_realloc(bitvec_t *vec, size_t old_len, size_t new_len)
Resize a bit vector, clear the remaining bits.