ptable -> htable in main.c
[eleutheria.git] / genstructs / htable / main.c
blob3d17e49699eb9f70a974383c41e2ee9053630927
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
5 #include "htable.h"
7 u_int djb_hash(const void *key)
9 /* DJB hashing */
10 u_int i, hash = 5381;
12 for (i = 0; i < strlen((char*)key); i++)
13 hash = ((hash << 5) + hash) + ((char*)key)[i];
15 return (hash & 0x7FFFFFFF);
18 int mycmp(const void *arg1, const void *arg2)
20 return (strcmp((char *) arg1, (char *) arg2));
23 void myprintf(const void *key, const void *data)
25 printf("%s(%s) ", (char *)key, (char *)data);
28 int main(void)
30 htable_t htable;
32 /* Initialize table */
33 htable_init(&htable, 2<<5);
35 /* Setup callback functions */
36 htable.ht_hashf = djb_hash;
37 htable.ht_cmpf = mycmp;
38 htable.ht_printf = myprintf;
40 htable_insert(&htable, "stathis", "stathis");
41 htable_insert(&htable, "maria", "maria");
42 htable_insert(&htable, "kostas", "kostas");
43 htable_insert(&htable, "panagiotopoulos", "panagiotopoulos");
44 htable_insert(&htable, "eleni", "eleni");
45 htable_print(&htable);
47 htable_remove(&htable, "maria");
48 htable_print(&htable);
50 htable_free(&htable);
52 return EXIT_SUCCESS;