Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| #include "cache.h" | |
| #include "oidset.h" | |
| struct oidset_entry { | |
| struct hashmap_entry hash; | |
| struct object_id oid; | |
| }; | |
| static int oidset_hashcmp(const void *unused_cmp_data, | |
| const void *va, const void *vb, | |
| const void *vkey) | |
| { | |
| const struct oidset_entry *a = va, *b = vb; | |
| const struct object_id *key = vkey; | |
| return oidcmp(&a->oid, key ? key : &b->oid); | |
| } | |
| int oidset_contains(const struct oidset *set, const struct object_id *oid) | |
| { | |
| struct hashmap_entry key; | |
| if (!set->map.cmpfn) | |
| return 0; | |
| hashmap_entry_init(&key, sha1hash(oid->hash)); | |
| return !!hashmap_get(&set->map, &key, oid); | |
| } | |
| int oidset_insert(struct oidset *set, const struct object_id *oid) | |
| { | |
| struct oidset_entry *entry; | |
| if (!set->map.cmpfn) | |
| hashmap_init(&set->map, oidset_hashcmp, NULL, 0); | |
| if (oidset_contains(set, oid)) | |
| return 1; | |
| entry = xmalloc(sizeof(*entry)); | |
| hashmap_entry_init(&entry->hash, sha1hash(oid->hash)); | |
| oidcpy(&entry->oid, oid); | |
| hashmap_add(&set->map, entry); | |
| return 0; | |
| } | |
| void oidset_clear(struct oidset *set) | |
| { | |
| hashmap_free(&set->map, 1); | |
| } |