25 #if defined(_RPMBF_INTERNAL)
35 #if defined(__LCLINT__)
46 #if defined(_RPMBF_INTERNAL)
49 #define __PBM_NBITS (8 * sizeof(__pbm_bits))
50 #define __PBM_IX(d) ((d) / __PBM_NBITS)
51 #define __PBM_MASK(d) ((__pbm_bits) 1 << (((unsigned)(d)) % __PBM_NBITS))
52 #define __PBM_BITS(set) ((__pbm_bits *)(set)->bits)
54 #define PBM_FREE(s) _free(s);
55 #define PBM_SET(d, s) (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d))
56 #define PBM_CLR(d, s) (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))
57 #define PBM_ISSET(d, s) ((__PBM_BITS (s)[__PBM_IX (d)] & __PBM_MASK (d)) != 0)
59 #define PBM_ALLOC(d) xcalloc(__PBM_IX (d) + 1, __PBM_NBITS/8)
68 static inline pbm_set * PBM_REALLOC(
pbm_set ** sp,
int * odp,
int nd)
75 nb = __PBM_IX(nd) + 1;
79 for (i = __PBM_IX(*odp) + 1; i < nb; i++)
80 __PBM_BITS(*sp)[
i] = 0;
98 #define rpmbfUnlink(_bf) \
99 ((rpmbf)rpmioUnlinkPoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, __LINE__))
109 #define rpmbfLink(_bf) \
110 ((rpmbf)rpmioLinkPoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, __LINE__))
120 #define rpmbfFree(_bf) \
121 ((rpmbf)rpmioFreePoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, __LINE__))
198 void rpmbfParams(
size_t n,
double e,
size_t * mp,
size_t * kp)
int rpmbfUnion(rpmbf a, const rpmbf b)
Return union of two Bloom filters.
int rpmbfDel(rpmbf bf, const void *_s, size_t ns)
Delete item from a Bloom filter.
int rpmbfClr(rpmbf bf)
Clear a Bloom filter, discarding all set memberships.
int rpmbfChk(rpmbf bf, const void *_s, size_t ns)
Check for item in a Bloom filter.
void rpmbfParams(size_t n, double e, size_t *mp, size_t *kp)
Return optimal {m, k} for given n and e.
const char const bson int mongo_write_concern int flags
int rpmbfIntersect(rpmbf a, const rpmbf b)
Return intersection of two Bloom filters.
int rpmbfAdd(rpmbf bf, const void *_s, size_t ns)
Add item to a Bloom filter.
rpmbf rpmbfNew(size_t m, size_t k, unsigned flags)
Create a Bloom filter.