From: Junio C Hamano Date: Thu, 13 Jul 2017 23:14:54 +0000 (-0700) Subject: Merge branch 'sb/hashmap-customize-comparison' X-Git-Tag: v2.14.0-rc0~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91f69225443b3be8d3f11c5c71795169d7d00737;p=git Merge branch 'sb/hashmap-customize-comparison' Update the hashmap API so that data to customize the behaviour of the comparison function can be specified at the time a hashmap is initialized. * sb/hashmap-customize-comparison: hashmap: migrate documentation from Documentation/technical into header patch-ids.c: use hashmap correctly hashmap.h: compare function has access to a data field --- 91f69225443b3be8d3f11c5c71795169d7d00737 diff --cc submodule-config.c index 37cfcceb95,0e1126183d..eeb154a894 --- a/submodule-config.c +++ b/submodule-config.c @@@ -33,9 -31,13 +33,10 @@@ enum lookup_type lookup_path }; - static int config_path_cmp(const struct submodule_entry *a, -static struct submodule_cache the_submodule_cache; -static int is_cache_init; - + static int config_path_cmp(const void *unused_cmp_data, + const struct submodule_entry *a, const struct submodule_entry *b, - const void *unused) + const void *unused_keydata) { return strcmp(a->config->path, b->config->path) || hashcmp(a->config->gitmodules_sha1, b->config->gitmodules_sha1); @@@ -49,16 -52,10 +51,16 @@@ static int config_name_cmp(const void * hashcmp(a->config->gitmodules_sha1, b->config->gitmodules_sha1); } -static void cache_init(struct submodule_cache *cache) +static struct submodule_cache *submodule_cache_alloc(void) +{ + return xcalloc(1, sizeof(struct submodule_cache)); +} + +static void submodule_cache_init(struct submodule_cache *cache) { - hashmap_init(&cache->for_path, (hashmap_cmp_fn) config_path_cmp, 0); - hashmap_init(&cache->for_name, (hashmap_cmp_fn) config_name_cmp, 0); + hashmap_init(&cache->for_path, (hashmap_cmp_fn) config_path_cmp, NULL, 0); + hashmap_init(&cache->for_name, (hashmap_cmp_fn) config_name_cmp, NULL, 0); + cache->initialized = 1; } static void free_one_config(struct submodule_entry *entry)