31#ifndef libcss_bloom_h_
32#define libcss_bloom_h_
41#define CSS_BLOOM_SIZE 4
46#if !(CSS_BLOOM_SIZE == 4 || CSS_BLOOM_SIZE == 8 || CSS_BLOOM_SIZE == 16)
47# error Unsupported bloom filter size. Size must be {4|8|16}.
51#define INDEX_BITS_N (CSS_BLOOM_SIZE - 1)
68 unsigned int bit = hash & 0x1f;
71 bloom[index] |= (1u << bit);
85 unsigned int bit = hash & 0x1f;
88 return (bloom[index] & (1u << bit));
99static inline bool css_bloom_in_bloom(
103 if ((a[0] & b[0]) != a[0])
105 if ((a[1] & b[1]) != a[1])
107 if ((a[2] & b[2]) != a[2])
109 if ((a[3] & b[3]) != a[3])
111#if (CSS_BLOOM_SIZE > 4)
112 if ((a[4] & b[4]) != a[4])
114 if ((a[5] & b[5]) != a[5])
116 if ((a[6] & b[6]) != a[6])
118 if ((a[7] & b[7]) != a[7])
121#if (CSS_BLOOM_SIZE > 8)
122 if ((a[8] & b[8]) != a[8])
124 if ((a[9] & b[9]) != a[9])
126 if ((a[10] & b[10]) != a[10])
128 if ((a[11] & b[11]) != a[11])
130 if ((a[12] & b[12]) != a[12])
132 if ((a[13] & b[13]) != a[13])
134 if ((a[14] & b[14]) != a[14])
136 if ((a[15] & b[15]) != a[15])
149static inline void css_bloom_merge(
157#if (CSS_BLOOM_SIZE > 4)
163#if (CSS_BLOOM_SIZE > 8)
uint32_t css_bloom
Definition bloom.h:56
#define INDEX_BITS_N
Definition bloom.h:51
#define CSS_BLOOM_SIZE
Definition bloom.h:41