SphinxBase 0.6
include/sphinxbase/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.

Defines

#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.
#define bitvec_realloc(v, n)   ckd_realloc(v, bitvec_size(n) * sizeof(bitvec_t))
 Resize a bit vector.
#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 size_t bitvec_count_set (bitvec_t *vec, size_t len)
 Return the number of bits set in the given bitvector.

Detailed Description

An implementation of bit vectors.

Implementation of basic operations of bit vectors.

Definition in file bitvec.h.


Define 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 110 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 118 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 135 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 127 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 93 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 101 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 64 of file bitvec.c.

References bitvec_count_set().

Referenced by bitvec_count_set().