hashmap: add simplified hashmap_get_from_hash() API
Hashmap entries are typically looked up by just a key. The hashmap_get() API expects an initialized entry structure instead, to support compound keys. This flexibility is currently only needed by find_dir_entry() in name-hash.c (and compat/win32/fscache.c in the msysgit fork). All other (currently five) call sites of hashmap_get() have to set up a near emtpy entry structure, resulting in duplicate code like this: struct hashmap_entry keyentry; hashmap_entry_init(&keyentry, hash(key)); return hashmap_get(map, &keyentry, key); Add a hashmap_get_from_hash() API that allows hashmap lookups by just specifying the key and its hash code, i.e.: return hashmap_get_from_hash(map, hash(key), key); Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
aa420c48ea
commit
ab73a9d119
@ -213,12 +213,11 @@ struct cache_entry *index_dir_exists(struct index_state *istate, const char *nam
|
||||
struct cache_entry *index_file_exists(struct index_state *istate, const char *name, int namelen, int icase)
|
||||
{
|
||||
struct cache_entry *ce;
|
||||
struct hashmap_entry key;
|
||||
|
||||
lazy_init_name_hash(istate);
|
||||
|
||||
hashmap_entry_init(&key, memihash(name, namelen));
|
||||
ce = hashmap_get(&istate->name_hash, &key, NULL);
|
||||
ce = hashmap_get_from_hash(&istate->name_hash,
|
||||
memihash(name, namelen), NULL);
|
||||
while (ce) {
|
||||
if (same_name(ce, name, namelen, icase))
|
||||
return ce;
|
||||
|
Reference in New Issue
Block a user