#include <limits.h>
#include <stdarg.h>
#include "bloom.h"
#define SETBIT(a,n) (a[n/CHAR_BIT] |= (1<<(n%CHAR_BIT)))
#define GETBIT(a,n) (a[n/CHAR_BIT] & (1<<(n%CHAR_BIT)))
BLOOM* bloom_create(size_t size,size_t nfuncs,...)
{
BLOOM* bloom;
va_list l;
int n;
if (!(bloom = malloc(sizeof(BLOOM)))) return NULL;
if (!(bloom->a = calloc((size+CHAR_BIT-1)/CHAR_BIT,sizeof(char))))
{
free(bloom);
return NULL;
}
if (!(bloom->funcs = (hashfunc_t*)malloc(nfuncs*sizeof(hashfunc_t))))
{
free(bloom->a);
free(bloom);
return NULL;
}
va_start(l,nfuncs);
for (n = 0; n < nfuncs; ++n)
{
bloom->funcs[n] = va_arg(l,hashfunc_t);
}
va_end(l);
bloom->nfuncs = nfuncs;
bloom->asize = size;
return bloom;
}
int bloom_destroy(BLOOM* bloom)
{
free(bloom->a);
free(bloom->funcs);
free(bloom);
return 0;
}
int bloom_add(BLOOM* bloom,const char* s)
{
size_t n;
for (n = 0; n < bloom->nfuncs; ++n)
{
SETBIT(bloom->a,bloom->funcs[n](s)%bloom->asize);
}
return 0;
}
int bloom_check(BLOOM* bloom,const char* s)
{
size_t n;
for (n = 0; n < bloom->nfuncs; ++n)
{
if (!(GETBIT(bloom->a,bloom->funcs[n](s)%bloom->asize))) return 0;
}
return 1;
}
枫蜜柚子茶
- 粉丝: 9018
- 资源: 5350
最新资源
- 圣诞树代码编程python-11.第k个最小数-自己可以加加难度.py
- 圣诞树代码编程python-12.单词方阵-这条蛇怎么躺都可以是吧.py
- BrupSuite 是用于攻击web应用程序的集成平台
- DIN EN 1712-2002 焊缝的无损检验 焊接连接件的超声波检验 允许极限值.pdf
- DIN EN 1714-1997(2002) 中文版 焊接接头的超声波检测.pdf
- DIN EN 1792-2003 焊接 焊接和相关工多语种术语表.pdf
- DIN EN 12070-2000 焊接消耗材料.抗蠕变钢的电弧焊接用焊丝电极、焊丝和焊条.分类.pdf
- DIN EN 12071-2000 焊接消耗品 耐蠕变钢气体遮蔽金属弧焊用管状电极 分级.pdf
- DIN EN 12062-2002 焊接无损检测 金属材料的一般规则.pdf
- DIN EN 26848-1991 惰性气体保护电弧焊接以及等离子气体切割和焊接用的钨极 编码.pdf
- DIN EN 60534-3-3-2000 工业过程控制阀.第3-3部分尺寸.对头焊接的对头尺寸,两种方式,球型,直角型控制阀门.pdf
- DIN EN 62137-1-1-2008 表面安装技术 表面安装焊接点的环境和忍受力试验方法 第1-1部分 拉脱强度试验.pdf
- DIN EN ISO 17642-1-2004 金属材料的焊接的有损试验 焊件的冷裂试验 弧焊过程 第1部分通则 .pdf
- DIN EN ISO 10882-2-2000 焊接和相关工艺的卫生与安全 工作人员呼吸区域中空气中悬浮颗粒物及气体的取样 第2部分气体取样.pdf
- DIN_EN_970_1997-03焊接外观检验.pdf
- DIN EN ISO 18279-2004 铜焊.铜焊接头的缺陷.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈