summaryrefslogtreecommitdiffstats
path: root/src/hashtable.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/hashtable.h')
-rw-r--r--src/hashtable.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/hashtable.h b/src/hashtable.h
new file mode 100644
index 0000000..8c72c82
--- /dev/null
+++ b/src/hashtable.h
@@ -0,0 +1,48 @@
1/*
2 * hashtable.h
3 * header file for really simple hash table implementation
4 *
5 * Copyright (c) 2011 Nikias Bassen, All Rights Reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21#ifndef HASHTABLE_H
22#define HASHTABLE_H
23#include <stdlib.h>
24#include "common.h"
25
26typedef struct hashentry_t {
27 void *key;
28 void *value;
29 void *next;
30} hashentry_t;
31
32typedef unsigned int(*hash_func_t)(const void* key);
33typedef int (*compare_func_t)(const void *a, const void *b);
34
35typedef struct hashtable_t {
36 hashentry_t *entries[256];
37 size_t count;
38 hash_func_t hash_func;
39 compare_func_t compare_func;
40} hashtable_t;
41
42_PLIST_INTERNAL hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func);
43_PLIST_INTERNAL void hash_table_destroy(hashtable_t *ht);
44
45_PLIST_INTERNAL void hash_table_insert(hashtable_t* ht, void *key, void *value);
46_PLIST_INTERNAL void* hash_table_lookup(hashtable_t* ht, void *key);
47
48#endif