+/*
+ * Copyright (C) 2008 Andre Noll <maan@systemlinux.org>
+ *
+ * Licensed under the GPL v2. For licencing details see COPYING.
+ */
+
+/** \file bloom.h Struct bloom and bloom filter functions. */
+
+/** Describes one instance of a bloom filter. */
struct bloom {
+ /** The bloom filter is of size 2^order bits. */
unsigned order;
+ /** Set that many bits in the filter per entry. */
unsigned num_hash_functions;
+ /** How many entries have been inserted so far. */
uint64_t num_entries;
+ /** Number of bits currently set. */
uint64_t num_set_bits;
+ /** The bit array. */
uint8_t *filter;
};
-int bloom_init(unsigned bloom_filter_order, unsigned num_hash_functions,
- struct bloom **result);
+struct bloom *bloom_new(unsigned order, unsigned num_hash_functions);
void bloom_free(struct bloom *b);
-int bloom_test_and_insert(const uint8_t *data, size_t len, struct bloom *b);
+int bloom_insert(const uint8_t *data, size_t len, struct bloom *b);