diff options
author | Eric Wong <e@80x24.org> | 2019-10-06 23:30:38 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-10-07 10:20:11 +0900 |
commit | 87571c3f71ba41d89eef5202f8589daa26f984ca (patch) | |
tree | d3b072917efce49f3f95d7d48763a8dfc83ef211 /t/helper | |
parent | hashmap_cmp_fn takes hashmap_entry params (diff) | |
download | tgif-87571c3f71ba41d89eef5202f8589daa26f984ca.tar.xz |
hashmap: use *_entry APIs for iteration
Inspired by list_for_each_entry in the Linux kernel.
Once again, these are somewhat compromised usability-wise
by compilers lacking __typeof__ support.
Signed-off-by: Eric Wong <e@80x24.org>
Reviewed-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper')
-rw-r--r-- | t/helper/test-hashmap.c | 7 | ||||
-rw-r--r-- | t/helper/test-lazy-init-name-hash.c | 12 |
2 files changed, 8 insertions, 11 deletions
diff --git a/t/helper/test-hashmap.c b/t/helper/test-hashmap.c index 56846da64c..4ec5e11556 100644 --- a/t/helper/test-hashmap.c +++ b/t/helper/test-hashmap.c @@ -222,10 +222,11 @@ int cmd__hashmap(int argc, const char **argv) free(entry); } else if (!strcmp("iterate", cmd)) { - struct hashmap_iter iter; - hashmap_iter_init(&map, &iter); - while ((entry = hashmap_iter_next(&iter))) + + hashmap_for_each_entry(&map, &iter, entry, + struct test_entry, + ent /* member name */) printf("%s %s\n", entry->key, get_value(entry)); } else if (!strcmp("size", cmd)) { diff --git a/t/helper/test-lazy-init-name-hash.c b/t/helper/test-lazy-init-name-hash.c index b99a37080d..9d4664d6a4 100644 --- a/t/helper/test-lazy-init-name-hash.c +++ b/t/helper/test-lazy-init-name-hash.c @@ -41,17 +41,13 @@ static void dump_run(void) die("non-threaded code path used"); } - dir = hashmap_iter_first(&the_index.dir_hash, &iter_dir); - while (dir) { + hashmap_for_each_entry(&the_index.dir_hash, &iter_dir, dir, + struct dir_entry, ent /* member name */) printf("dir %08x %7d %s\n", dir->ent.hash, dir->nr, dir->name); - dir = hashmap_iter_next(&iter_dir); - } - ce = hashmap_iter_first(&the_index.name_hash, &iter_cache); - while (ce) { + hashmap_for_each_entry(&the_index.name_hash, &iter_cache, ce, + struct cache_entry, ent /* member name */) printf("name %08x %s\n", ce->ent.hash, ce->name); - ce = hashmap_iter_next(&iter_cache); - } discard_cache(); } |