Go to the documentation of this file.
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))
80 #define bitvec_realloc(v,n) ckd_realloc(v, bitvec_size(n) * sizeof(bitvec_t))
85 #define bitvec_free(v) ckd_free(v)
93 #define bitvec_set(v,b) (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1))))
101 #define bitvec_set_all(v,n) memset(v, (bitvec_t)-1, \
102 (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
110 #define bitvec_clear(v,b) (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1))))
118 #define bitvec_clear_all(v,n) memset(v, 0, (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
127 #define bitvec_is_set(v,b) (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1))))
135 #define bitvec_is_clear(v,b) (! (bitvec_is_set(v,b)))