SphinxBase 5prealpha
|
An implementation of bit vectors. More...
#include <string.h>
#include <sphinxbase/sphinxbase_export.h>
#include <sphinxbase/prim_type.h>
#include <sphinxbase/ckd_alloc.h>
Go to the source code of this file.
Macros | |
#define | BITVEC_BITS 32 |
#define | bitvec_size(n) (((n)+BITVEC_BITS-1)/BITVEC_BITS) |
Number of bitvec_t in a bit vector. | |
#define | bitvec_alloc(n) ckd_calloc(bitvec_size(n), sizeof(bitvec_t)) |
Allocate a bit vector, all bits are clear. | |
#define | bitvec_free(v) ckd_free(v) |
Free a bit vector. | |
#define | bitvec_set(v, b) (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1)))) |
Set the b-th bit of bit vector v. | |
#define | bitvec_set_all(v, n) |
Set all n bits in bit vector v. | |
#define | bitvec_clear(v, b) (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1)))) |
Clear the b-th bit of bit vector v. | |
#define | bitvec_clear_all(v, n) |
Clear all n bits in bit vector v. | |
#define | bitvec_is_set(v, b) (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1)))) |
Check whether the b-th bit is set in vector v. | |
#define | bitvec_is_clear(v, b) (! (bitvec_is_set(v,b))) |
Check whether the b-th bit is cleared in vector v. | |
Typedefs | |
typedef uint32 | bitvec_t |
Functions | |
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. | |
SPHINXBASE_EXPORT size_t | bitvec_count_set (bitvec_t *vec, size_t len) |
Return the number of bits set in the given bitvector. | |
An implementation of bit vectors.
Implementation of basic operations of bit vectors.
Definition in file bitvec.h.
#define bitvec_alloc | ( | n | ) | ckd_calloc(bitvec_size(n), sizeof(bitvec_t)) |
#define bitvec_clear | ( | v, | |
b ) (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1)))) |
#define bitvec_clear_all | ( | v, | |
n ) |
#define bitvec_is_clear | ( | v, | |
b ) (! (bitvec_is_set(v,b))) |
#define bitvec_is_set | ( | v, | |
b ) (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1)))) |
#define bitvec_set | ( | v, | |
b ) (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1)))) |
#define bitvec_set_all | ( | v, | |
n ) |
#define bitvec_size | ( | n | ) | (((n)+BITVEC_BITS-1)/BITVEC_BITS) |
Number of bitvec_t in a bit vector.
Definition at line 70 of file bitvec.h.
Referenced by bitvec_realloc().
SPHINXBASE_EXPORT size_t bitvec_count_set | ( | bitvec_t * | vec, |
size_t | len ) |
Return the number of bits set in the given bitvector.
vec | is the bit vector |
len | is the length of bit vector vec |
vec
Definition at line 80 of file bitvec.c.
References bitvec_count_set().
Referenced by bitvec_count_set().
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.
Definition at line 64 of file bitvec.c.
References bitvec_realloc(), bitvec_size, and ckd_realloc.
Referenced by bitvec_realloc().