#endif
+/**
+ * Keys that can be inserted into and removed from an IBF.
+ */
struct IBF_Key
{
uint64_t key_val;
};
+
+/**
+ * Hash of an IBF key.
+ */
struct IBF_KeyHash
{
uint32_t key_hash_val;
};
+
+/**
+ * Type of the count field of IBF buckets.
+ */
struct IBF_Count
{
int8_t count_val;
};
+
/**
* Size of one ibf bucket in bytes
*/
#define IBF_BUCKET_SIZE (sizeof (struct IBF_Count) + sizeof (struct IBF_Key) + \
sizeof (struct IBF_KeyHash))
+
/**
* Invertible bloom filter (IBF).
*
/**
- * Insert an element into an IBF.
+ * Insert a key into an IBF.
*
* @param ibf the IBF
* @param key the element's hash code
ibf_insert (struct InvertibleBloomFilter *ibf, struct IBF_Key key);
+/**
+ * Remove a key from an IBF.
+ *
+ * @param ibf the IBF
+ * @param key the element's hash code
+ */
+void
+ibf_remove (struct InvertibleBloomFilter *ibf, struct IBF_Key key);
+
+
/**
* Subtract ibf2 from ibf1, storing the result in ibf1.
* The two IBF's must have the same parameters size and hash_num.
struct InvertibleBloomFilter *
ibf_dup (const struct InvertibleBloomFilter *ibf);
+
/**
* Destroy all resources associated with the invertible bloom filter.
* No more ibf_*-functions may be called on ibf after calling destroy.