1 #ifndef BLOOM_H 2 #define BLOOM_H 3 4 #include <stdlib.h> 5 #include <stdint.h> 6 #include <stdbool.h> 7 8 #include "file_utils.h" 9 10 #define SALT_CONSTANT 0x66e8c41d 11 12 typedef struct bloom_filter { 13 uint64_t capacity; 14 double error; 15 uint64_t num_bits; 16 uint64_t num_bytes; 17 uint32_t num_hashes; 18 19 double bits_per_entry; 20 unsigned char *filter; 21 bool ready; 22 } bloom_filter_t; 23 24 25 bloom_filter_t *bloom_filter_new(uint64_t capacity, double error); 26 27 int bloom_filter_check(bloom_filter_t *self, const char *key, size_t len); 28 int bloom_filter_add(bloom_filter_t *self, const char *key, size_t len); 29 30 void bloom_filter_print(bloom_filter_t *self); 31 32 void bloom_filter_destroy(bloom_filter_t *self); 33 34 bool bloom_filter_write(bloom_filter_t *self, FILE *f); 35 bool bloom_filter_save(bloom_filter_t *self, char *path); 36 37 bloom_filter_t *bloom_filter_read(FILE *f); 38 bloom_filter_t *bloom_filter_load(char *path); 39 40 41 #endif