bitvec.h
来自「CMU大名鼎鼎的SPHINX-3大词汇量连续语音识别系统」· C头文件 代码 · 共 151 行
H
151 行
/* ==================================================================== * Copyright (c) 1999-2004 Carnegie Mellon University. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * This work was supported in part by funding from the Defense Advanced * Research Projects Agency and the National Science Foundation of the * United States of America, and the CMU Sphinx Speech Consortium. * * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * *//* * bitvec.h -- Bit vector type. * * ********************************************** * CMU ARPA Speech Project * * Copyright (c) 1999 Carnegie Mellon University. * ALL RIGHTS RESERVED. * ********************************************** * * HISTORY * * 13-Sep-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon * Added bitvec_uint32size(). * * 05-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon * Added bitvec_count_set(). * * 17-Jul-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon * Created. */#ifndef _LIBUTIL_BITVEC_H_#define _LIBUTIL_BITVEC_H_#include "prim_type.h"#include "ckd_alloc.h" /** \file bitvec.h * \brief An implementation of bit vector * * \warning: The bitvec functions is not for arbitrary usage!! * * Implementation of basic operations of bit vectors. * */#ifdef __cplusplusextern "C" {#endiftypedef uint32 *bitvec_t; /** * No. of uint32 words allocated to represent a bitvector of the given size n */#define bitvec_uint32size(n) (((n)+31)>>5) /** * Allocate a bit vector. */#define bitvec_alloc(n) ((bitvec_t) ckd_calloc (((n)+31)>>5, sizeof(uint32))) /** * Free a bit vector. */#define bitvec_free(v) ckd_free((char *)(v)) /** * Set the b-th bit of bit vector v * @param v is a vector * @param b is the bit which will be set */#define bitvec_set(v,b) (v[(b)>>5] |= (1 << ((b) & 0x001f))) /** * Clear the b-th bit of bit vector v * @param v is a vector * @param b is the bit which will be set */#define bitvec_clear(v,b) (v[(b)>>5] &= ~(1 << ((b) & 0x001f))) /** * Clear the n words bit vector v * @param v is a vector * @param n is the number of words. */#define bitvec_clear_all(v,n) memset(v, 0, (((n)+31)>>5)*sizeof(uint32)) /** * Check whether the b-th bit is set in vector v * @param v is a vector * @param b is the bit which will be checked */#define bitvec_is_set(v,b) (v[(b)>>5] & (1 << ((b) & 0x001f))) /** * Check whether the b-th bit is cleared in vector v * @param v is a vector * @param b is the bit which will be checked */#define bitvec_is_clear(v,b) (! (bitvec_is_set(v,b))) /** * Return the number of bits set in the given bit-vector vec with length len * @param vec is the bit vector * @param len is the length of bit vector #vec * @return the number of bits being set in vector #vec */int32 bitvec_count_set (bitvec_t vec, /* In: Bit vector to search */ int32 len); /* In: Lenght of above bit vector */#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?