]> git.datanom.net - hashtable.git/blame - hashtable.h
almost complete
[hashtable.git] / hashtable.h
CommitLineData
1d8fe1f7
MR
1#ifndef _HASHTABLE_H_
2#define _HASHTABLE_H_
3
4#include <stdint.h>
5#include <stdbool.h>
6#include <stddef.h>
7
8#define TABLESIZE (1<<20)
9
10typedef uint64_t (*HashFunc)(const void*);
11typedef bool (*EqualFunc)(const void*, const void*);
8c5be416 12typedef void (*FreeFunc)(void*);
1d8fe1f7 13typedef struct _Hashtable Hashtable;
8c5be416
MR
14typedef void (*ForeachFunc)(void*, void*, void*);
15
16typedef struct _HashtableIter {
17 /* Private */
18 void* dummy1;
19 void* dummy2;
20 void* dummy3;
21 int64_t dummy4;
22} HashtableIter;
23
24
25typedef struct _List {
26 void* data;
27 struct _List* next;
28} List;
29
1d8fe1f7
MR
30
31uint64_t int_hash(const void*);
32uint64_t str_hash(const void*);
33uint64_t ptr_hash(const void*);
34bool int_equal(const void*, const void*);
35bool str_equal(const void*, const void*);
36bool ptr_equal(const void*, const void*);
37
38Hashtable* hash_table_create(HashFunc hf, EqualFunc ef);
8c5be416
MR
39Hashtable* hash_table_create_notify(HashFunc hf, EqualFunc ef, FreeFunc ff);
40Hashtable* hash_table_create_full(HashFunc hf, EqualFunc ef, uint32_t size, FreeFunc ff);
1d8fe1f7
MR
41void hash_table_destroy(Hashtable* ht);
42void hash_table_print(Hashtable* ht);
43bool hash_table_insert(Hashtable* ht, const void* key, void* obj);
44void* hash_table_lookup(Hashtable* ht, const void* key);
45void* hash_table_delete(Hashtable* ht, const void* key);
8c5be416
MR
46List* hash_table_keys(Hashtable* ht);
47List* hash_table_values(Hashtable* ht);
48void hash_table_list_free(List* list);
49void hash_table_foreach(Hashtable* ht, ForeachFunc, void* userdata);
50void hash_table_iter_init(HashtableIter* iter, Hashtable* ht);
51bool hash_table_iter_next(HashtableIter* iter, void** key, void** value);
1d8fe1f7
MR
52
53#endif
54
This page took 0.049971 seconds and 5 git commands to generate.