mirror of
https://github.com/yrutschle/sslh.git
synced 2025-04-08 05:10:05 +03:00
29 lines
937 B
C
29 lines
937 B
C
#ifndef HASH_H
|
|
#define HASH_H
|
|
|
|
/* You will need to typedef a pointer type to hash_item before including this
|
|
* .h */
|
|
|
|
typedef struct hash hash;
|
|
|
|
/* Function that returns a key (index) for a given item. The key must be always
|
|
* the same for an item. It doesn't need to be bounded (hash.c masks it for you) */
|
|
typedef int (*hash_make_key_fn)(hash_item item);
|
|
|
|
/* Function that compares two items: returns 0 if they are the same */
|
|
typedef int (*hash_cmp_item_fn)(hash_item item1, hash_item item2);
|
|
|
|
hash* hash_init(int hash_size, hash_make_key_fn make_key, hash_cmp_item_fn cmp_item);
|
|
|
|
int hash_insert(hash* h, hash_item new);
|
|
int hash_remove(hash* h, hash_item item);
|
|
|
|
/* Returns the hash item that matches specification (meaning the
|
|
* comparison function returns true for cmp(x, item), or NULL if not found */
|
|
hash_item hash_find(hash* h, hash_item item);
|
|
|
|
|
|
void hash_dump(hash* h, char* filename); /* For development only */
|
|
|
|
#endif
|