summaryrefslogtreecommitdiffstats
path: root/src/hashtable.h
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2011-05-27 14:55:31 +0200
committerGravatar Nikias Bassen2011-05-27 14:55:31 +0200
commit024e755d9f3c33e742ce158542b1ded057a88f4f (patch)
tree7f80705e0c3dd35fd86fcd943dbf0d0c6b9b78ab /src/hashtable.h
parent94cb55d34dd9cb9bda539999dc017af76ec64a4f (diff)
downloadlibplist-024e755d9f3c33e742ce158542b1ded057a88f4f.tar.gz
libplist-024e755d9f3c33e742ce158542b1ded057a88f4f.tar.bz2
Make libplist glib free
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