diff src/ploki/hash.h @ 4223:ac0403686959

<oerjan> rm -rf src/ploki; mv ploki src
author HackBot
date Fri, 20 Dec 2013 22:18:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ploki/hash.h	Fri Dec 20 22:18:50 2013 +0000
@@ -0,0 +1,47 @@
+#ifndef HASH_H_
+#define HASH_H_
+
+#include <stddef.h>
+
+typedef struct {
+	size_t entries, size, newsize;
+	size_t brk;
+	size_t seed;
+	size_t iter;
+	struct h_node *iterptr;
+	struct h_node **table;
+	size_t (*hash)(const void *, size_t);
+	int (*cmp)(const void *, const void *);
+	void (*delk)(void *);
+	void (*delv)(void *);
+} Hash;
+
+enum {
+	H_OK,
+	H_EXIST,
+	H_NOENT
+};
+
+void h_init(
+		Hash *,
+		size_t (*)(const void *, size_t),
+		int (*)(const void *, const void *),
+		void (*)(void *),
+		void (*)(void *)
+		);
+void h_end(Hash *);
+int h_get(Hash *, const void *, void **);
+int h_del(Hash *, const void *);
+#if 0
+void h_push(Hash *, void *, void *);
+#endif
+int h_put(Hash *, void *, void *, int);
+void h_reset(Hash *);
+int h_nextkv(Hash *, void **, void **);
+
+#if 0
+size_t h_entries(const Hash *);
+#define h_entries(h) ((h)->entries + 0)
+#endif
+
+#endif /* HASH_H_ */