summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile2
-rw-r--r--examples/gehashmap.c42
2 files changed, 44 insertions, 0 deletions
diff --git a/examples/Makefile b/examples/Makefile
new file mode 100644
index 0000000..0d87a45
--- /dev/null
+++ b/examples/Makefile
@@ -0,0 +1,2 @@
+all:
+ cc -Og -g -ggdb gehashmap.c -o gehashmap
diff --git a/examples/gehashmap.c b/examples/gehashmap.c
new file mode 100644
index 0000000..f216d00
--- /dev/null
+++ b/examples/gehashmap.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+size_t hash(char *);
+
+#define GEHASHMAP_NAME funmap
+#define GEHASHMAP_KEY_T char *
+#define GEHASHMAP_VAL_T int
+#define GEHASHMAP_CMP_FUNC (int (*)(char *, char *)) strcmp
+#define GEHASHMAP_FREE_FUNC (void (*)(char *)) free
+#define GEHASHMAP_HASH_FUNC hash
+#include <gehashmap.h>
+
+size_t
+hash(char *s)
+{
+ char c;
+ size_t x = 5381;
+
+ while (c = *s++)
+ x = ((x << 5) + x) + c;
+
+ return x;
+}
+
+int
+main(void)
+{
+ int n;
+ funmap_t *map;
+
+ funmap_new(map = malloc(sizeof(funmap_t)));
+ funmap_put(map, strdup("Thomas Voß"), 5);
+ funmap_put(map, strdup("THOMAS VOẞ"), 6);
+ funmap_put(map, strdup("Thomas Voss"), 7);
+ funmap_get(map, "Thomas Voß", &n); printf("Thomas Voß -> ‚%d‘\n", n);
+ funmap_get(map, "THOMAS VOẞ", &n); printf("THOMAS VOẞ -> ‚%d‘\n", n);
+ funmap_get(map, "Thomas Voss", &n); printf("Thomas Voss -> ‚%d‘\n", n);
+ funmap_free(map);
+ free(map);
+}