X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fhashtable%2Ftest%2Frun.c;fp=ccan%2Fhashtable%2Ftest%2Frun.c;h=bafecd6166fe930db099dba87100d8575e1db6f0;hp=e072cae751279b66655bd63ec340a07710afbdd0;hb=b1c867121f379d76dc7fb7d99bae77e2b7d99841;hpb=184070eb4a4a2e130c0053eb82fd8c96a19e954f diff --git a/ccan/hashtable/test/run.c b/ccan/hashtable/test/run.c index e072cae7..bafecd61 100644 --- a/ccan/hashtable/test/run.c +++ b/ccan/hashtable/test/run.c @@ -87,49 +87,40 @@ struct travarg { uint64_t *val; }; -static bool count(void *p, void *cbarg) +static bool count(void *p, struct travarg *travarg) { - struct travarg *travarg = cbarg; travarg->count++; travarg->touched[*(uint64_t *)p]++; return false; } -static bool delete_self(void *p, void *cbarg) +static bool delete_self(uint64_t *p, struct travarg *travarg) { - struct travarg *travarg = cbarg; - uint64_t val = *(uint64_t *)p; - travarg->count++; - travarg->touched[val]++; + travarg->touched[*p]++; return !hashtable_del(travarg->ht, hash(p, NULL), p); } -static bool delete_next(void *p, void *cbarg) +static bool delete_next(uint64_t *p, struct travarg *travarg) { - struct travarg *travarg = cbarg; - uint64_t val = *(uint64_t *)p; - uint64_t *next = &travarg->val[(val + 1) % NUM_VALS]; + uint64_t *next = &travarg->val[((*p) + 1) % NUM_VALS]; travarg->count++; - travarg->touched[val]++; + travarg->touched[*p]++; return !hashtable_del(travarg->ht, hash(next, NULL), next); } -static bool delete_prev(void *p, void *cbarg) +static bool delete_prev(uint64_t *p, struct travarg *travarg) { - struct travarg *travarg = cbarg; - uint64_t val = *(uint64_t *)p; - uint64_t *prev = &travarg->val[(val - 1) % NUM_VALS]; + uint64_t *prev = &travarg->val[((*p) - 1) % NUM_VALS]; travarg->count++; - travarg->touched[val]++; + travarg->touched[*p]++; return !hashtable_del(travarg->ht, hash(prev, NULL), prev); } -static bool stop_halfway(void *p, void *cbarg) +static bool stop_halfway(void *p, struct travarg *travarg) { - struct travarg *travarg = cbarg; travarg->count++; travarg->touched[*(uint64_t *)p]++; @@ -207,13 +198,13 @@ int main(int argc, char *argv[]) travarg.count = 0; /* Traverse. */ - hashtable_traverse(ht, count, &travarg); + hashtable_traverse(ht, void, count, &travarg); ok1(travarg.count == NUM_VALS); check_all_touched_once(&travarg); memset(travarg.touched, 0, sizeof(travarg.touched)); travarg.count = 0; - hashtable_traverse(ht, stop_halfway, &travarg); + hashtable_traverse(ht, void, stop_halfway, &travarg); ok1(travarg.count == NUM_VALS / 2); check_only_touched_once(&travarg); @@ -222,7 +213,7 @@ int main(int argc, char *argv[]) i = 0; /* Delete until we make no more progress. */ for (;;) { - hashtable_traverse(ht, delete_self, &travarg); + hashtable_traverse(ht, uint64_t, delete_self, &travarg); if (travarg.count == i || travarg.count > NUM_VALS) break; i = travarg.count; @@ -233,14 +224,14 @@ int main(int argc, char *argv[]) memset(travarg.touched, 0, sizeof(travarg.touched)); travarg.count = 0; refill_vals(ht, val, NUM_VALS); - hashtable_traverse(ht, delete_next, &travarg); + hashtable_traverse(ht, uint64_t, delete_next, &travarg); ok1(travarg.count <= NUM_VALS); check_only_touched_once(&travarg); memset(travarg.touched, 0, sizeof(travarg.touched)); travarg.count = 0; refill_vals(ht, val, NUM_VALS); - hashtable_traverse(ht, delete_prev, &travarg); + hashtable_traverse(ht, uint64_t, delete_prev, &travarg); ok1(travarg.count <= NUM_VALS); check_only_touched_once(&travarg);