⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitvector.c

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 C
字号:
/***********************************************************************bitvector.c - some routines for dealing with bitvectorsCopyright (C) 1991 Dean RubineThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License. See ../COPYING forthe full agreement. **********************************************************************/ /*LINTLIBRARY*/#include "util.h"#undef	BITS_PER_VECTOR#define BITS_PER_VECTOR	128#include "bitvector.h"/* ari -- for strlen */#include <string.h>    intbitcount(max, bv)     int max;     BitVector bv;{    register int i, count;    for (count = i = 0; i < max; i++)	if (IS_SET(i, bv))	    count++;    return count;}char *BitVectorToString(max, bv)     BitVector bv;{    char *string = tempstring();    register int i;    for (i = 0; i < max; i++)	string[i] = IS_SET(i, bv) ? (i % 10) + '0' : '-';    string[i] = '\0';    return string;}voidStringToBitVector(string, max, bv)     char *string;     int max;     BitVector bv;{    register int i;/* ari -- strlen returns a size_t, which depends on which OS you've got */    if ((int) strlen(string) != max) {	error("StringToBitVector: strlen(%s)=%d != %d",	      string, (int) strlen(string), max);	return;    }    for (i = 0; i < max; i++)	if (string[i] != '-')	    BIT_SET(i, bv);	else	    BIT_CLEAR(i, bv);}voidSetBitVector(v)     register BitVector v;{    register int nints = INTS_PER_VECTOR;    while (--nints >= 0)	*v++ = -1;}voidClearBitVector(nints, v)     register int nints;     register BitVector v;{    while (--nints >= 0)	*v++ = 0;}voidAssignBitVector(nints, v1, v2)     register int nints;     register BitVector v1, v2;{    while (--nints >= 0)	*v1++ = *v2++;}intBitVectorDeQ(max, v)     register int max;     register BitVector v;{    register int i;    for (i = 0; i < max; i++)	if (IS_SET(i, v)) {	    BIT_CLEAR(i, v);	    return i;	}    return -1;}int *BitVectorOr(v, v1, v2, ipv)     int *v;     register int *v1, *v2;     register int ipv;{    int *vv = v;    do	*vv++ = *v1++ | *v2++;    while (--ipv > 0);    return v;}int *BitVectorAnd(v, v1, v2, ipv)     int *v;     register int *v1, *v2;     register int ipv;{    int *vv = v;    do	*vv++ = *v1++ & *v2++;    while (--ipv > 0);    return v;}intBitVectorNoBitsSet(v, ipv)     register int *v;     register int ipv;{    do	if (*v++)	    return 0;    while (--ipv > 0);    return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -