From fc2dd1171212f0e72d4169ad2964d0a712dfba23 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Fri, 23 Dec 2022 23:14:04 +0100 Subject: Totally rework the gehashmap implementation --- examples/gehashmap.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'examples') diff --git a/examples/gehashmap.c b/examples/gehashmap.c index f216d00..b0763ac 100644 --- a/examples/gehashmap.c +++ b/examples/gehashmap.c @@ -2,18 +2,25 @@ #include #include -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_API(char *, int, funmap); +GEHASHMAP_IMPL(char *, int, funmap); + +bool +funmap_key_iseq(char *a, char *b) +{ + return strcmp(a, b) == 0; +} + +void +funmap_key_free(char *s) +{ + free(s); +} + size_t -hash(char *s) +funmap_key_hash(char *s) { char c; size_t x = 5381; @@ -31,9 +38,9 @@ main(void) 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_set(map, strdup("Thomas Voß"), 5); + funmap_set(map, strdup("THOMAS VOẞ"), 6); + funmap_set(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); -- cgit v1.2.3