#include "../hash.h" #include "../uhtbl.h" #include #include struct mybucket { uhtbl_head_t __head; long double mydata; }; int main() { printf("%i\n", (int)sizeof(struct mybucket)); uhtbl_t tbl; uhtbl_init(&tbl, sizeof(struct mybucket), 16, hash_murmur2, NULL); struct mybucket *bucket; const char *t[] = {"null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "virundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig", "dreißig", "einunddreißig", "zweiunddreißig"}; for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_set(&tbl, t[i], strlen(t[i])); bucket->mydata = i; } uint32_t iter = 0; while ((bucket = (struct mybucket*)uhtbl_next(&tbl, &iter))) { printf("%i\t", (int)bucket->mydata); } printf("\nSize: %i, Used: %i\n\n", tbl.size, tbl.used); for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_set(&tbl, 0, i); bucket->mydata = i; } iter = 0; while ((bucket = (struct mybucket*)uhtbl_next(&tbl, &iter))) { printf("%i\t", (int)bucket->mydata); } printf("\nSize: %i, Used: %i\n\n", tbl.size, tbl.used); for (int i = 0; i < 33; i++) { if (uhtbl_unset(&tbl, 0, i)) { printf("Unset failed %i\n", i); } if (uhtbl_unset(&tbl, t[i], strlen(t[i]))) { printf("Unset failed %s\n", t[i]); } } iter = 0; while ((bucket = (struct mybucket*)uhtbl_next(&tbl, &iter))) { printf("%i\t", (int)bucket->mydata); } printf("\nSize: %i, Used: %i\n\n", tbl.size, tbl.used); for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_set(&tbl, t[i], strlen(t[i])); bucket->mydata = i; } for (int i = 0; i < 33; i++) { bucket =(struct mybucket*) uhtbl_set(&tbl, 0, i); bucket->mydata = i; } for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_set(&tbl, t[i], strlen(t[i])); bucket->mydata = i; } for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_set(&tbl, 0, i); bucket->mydata = i; } iter = 0; while ((bucket = (struct mybucket*)uhtbl_next(&tbl, &iter))) { printf("%i\t", (int)bucket->mydata); } printf("\nSize: %i, Used: %i\n\n", tbl.size, tbl.used); for (int i = 0; i < 33; i++) { bucket = (struct mybucket*)uhtbl_get(&tbl, t[i], strlen(t[i])); printf("%i\t", (int)bucket->mydata); bucket = (struct mybucket*)uhtbl_get(&tbl, 0, i); printf("%i\t", (int)bucket->mydata); } printf("\nSize: %i, Used: %i\n\n", tbl.size, tbl.used); uhtbl_finalize(&tbl); return 0; }