SphinxBase  5prealpha
bitvec.h File Reference

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. More...
 
#define bitvec_set_all(v, n)
 Set all n bits in bit vector v. More...
 
#define bitvec_clear(v, b)   (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1))))
 Clear the b-th bit of bit vector v. More...
 
#define bitvec_clear_all(v, n)
 Clear all n bits in bit vector v. More...
 
#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. More...
 
#define bitvec_is_clear(v, b)   (! (bitvec_is_set(v,b)))
 Check whether the b-th bit is cleared in vector v. More...
 

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. More...
 

Detailed Description

An implementation of bit vectors.

Implementation of basic operations of bit vectors.

Definition in file bitvec.h.

Macro Definition Documentation

#define bitvec_clear (   v,
 
)    (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1))))

Clear the b-th bit of bit vector v.

Parameters
vis a vector
bis the bit which will be set

Definition at line 112 of file bitvec.h.

#define bitvec_clear_all (   v,
 
)
Value:
memset(v, 0, (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
sizeof(bitvec_t))

Clear all n bits in bit vector v.

Parameters
vis a vector
nis the number of bits

Definition at line 120 of file bitvec.h.

#define bitvec_is_clear (   v,
 
)    (! (bitvec_is_set(v,b)))

Check whether the b-th bit is cleared in vector v.

Parameters
vis a vector
bis the bit which will be checked

Definition at line 137 of file bitvec.h.

#define bitvec_is_set (   v,
 
)    (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1))))

Check whether the b-th bit is set in vector v.

Parameters
vis a vector
bis the bit which will be checked

Definition at line 129 of file bitvec.h.

#define bitvec_set (   v,
 
)    (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1))))

Set the b-th bit of bit vector v.

Parameters
vis a vector
bis the bit which will be set

Definition at line 95 of file bitvec.h.

#define bitvec_set_all (   v,
 
)
Value:
memset(v, (bitvec_t)-1, \
(((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
sizeof(bitvec_t))

Set all n bits in bit vector v.

Parameters
vis a vector
nis the number of bits

Definition at line 103 of file bitvec.h.

Function Documentation

SPHINXBASE_EXPORT size_t bitvec_count_set ( bitvec_t *  vec,
size_t  len 
)

Return the number of bits set in the given bitvector.

Parameters
vecis the bit vector
lenis the length of bit vector vec
Returns
the number of bits being set in vector vec

Definition at line 80 of file bitvec.c.