summaryrefslogtreecommitdiffstats
path: root/hashtbl.h
diff options
context:
space:
mode:
Diffstat (limited to 'hashtbl.h')
-rw-r--r--hashtbl.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/hashtbl.h b/hashtbl.h
new file mode 100644
index 0000000..70428f8
--- /dev/null
+++ b/hashtbl.h
@@ -0,0 +1,31 @@
+#ifndef HASHTBL_H_
+#define HASHTBL_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+typedef struct hashtbl
+{
+ size_t size;
+ struct hashnode_s **nodes;
+ unsigned int (*hashfunc)(const char *);
+} HASHTBL;
+
+struct hashnode_s {
+ char *key;
+ void *data;
+ struct hashnode_s *next;
+};
+
+/* function prototypes */
+char *strdup(const char *);
+HASHTBL *hashtbl_create(size_t, unsigned int (*hashfunc)(const char *));
+void hashtbl_destroy(HASHTBL *);
+int hashtbl_insert(HASHTBL *, const char *, void *);
+int hashtbl_remove(HASHTBL *, const char *);
+void *hashtbl_get(HASHTBL *, const char *);
+int hashtbl_resize(HASHTBL *, size_t);
+
+#endif
+