|  | #include "cache.h" | 
|  | #include "oidset.h" | 
|  |  | 
|  | int oidset_contains(const struct oidset *set, const struct object_id *oid) | 
|  | { | 
|  | if (!set->map.map.tablesize) | 
|  | return 0; | 
|  | return !!oidmap_get(&set->map, oid); | 
|  | } | 
|  |  | 
|  | int oidset_insert(struct oidset *set, const struct object_id *oid) | 
|  | { | 
|  | struct oidmap_entry *entry; | 
|  |  | 
|  | if (!set->map.map.tablesize) | 
|  | oidmap_init(&set->map, 0); | 
|  | else if (oidset_contains(set, oid)) | 
|  | return 1; | 
|  |  | 
|  | entry = xmalloc(sizeof(*entry)); | 
|  | oidcpy(&entry->oid, oid); | 
|  |  | 
|  | oidmap_put(&set->map, entry); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | int oidset_remove(struct oidset *set, const struct object_id *oid) | 
|  | { | 
|  | struct oidmap_entry *entry; | 
|  |  | 
|  | entry = oidmap_remove(&set->map, oid); | 
|  | free(entry); | 
|  |  | 
|  | return (entry != NULL); | 
|  | } | 
|  |  | 
|  | void oidset_clear(struct oidset *set) | 
|  | { | 
|  | oidmap_free(&set->map, 1); | 
|  | } |