4 static int oidmap_neq(const void *hashmap_cmp_fn_data
,
5 const void *entry
, const void *entry_or_key
,
8 const struct oidmap_entry
*entry_
= entry
;
10 return !oideq(&entry_
->oid
, (const struct object_id
*) keydata
);
11 return !oideq(&entry_
->oid
,
12 &((const struct oidmap_entry
*) entry_or_key
)->oid
);
15 void oidmap_init(struct oidmap
*map
, size_t initial_size
)
17 hashmap_init(&map
->map
, oidmap_neq
, NULL
, initial_size
);
20 void oidmap_free(struct oidmap
*map
, int free_entries
)
24 hashmap_free(&map
->map
, free_entries
);
27 void *oidmap_get(const struct oidmap
*map
, const struct object_id
*key
)
32 return hashmap_get_from_hash(&map
->map
, oidhash(key
), key
);
35 void *oidmap_remove(struct oidmap
*map
, const struct object_id
*key
)
37 struct hashmap_entry entry
;
42 hashmap_entry_init(&entry
, oidhash(key
));
43 return hashmap_remove(&map
->map
, &entry
, key
);
46 void *oidmap_put(struct oidmap
*map
, void *entry
)
48 struct oidmap_entry
*to_put
= entry
;
53 hashmap_entry_init(&to_put
->internal_entry
, oidhash(&to_put
->oid
));
54 return hashmap_put(&map
->map
, to_put
);