| #include "cache.h" | |
| #include "oidset.h" | |
| void oidset_init(struct oidset *set, size_t initial_size) | |
| { | |
| memset(&set->set, 0, sizeof(set->set)); | |
| if (initial_size) | |
| kh_resize_oid(&set->set, initial_size); | |
| } | |
| int oidset_contains(const struct oidset *set, const struct object_id *oid) | |
| { | |
| khiter_t pos = kh_get_oid(&set->set, *oid); | |
| return pos != kh_end(&set->set); | |
| } | |
| int oidset_insert(struct oidset *set, const struct object_id *oid) | |
| { | |
| int added; | |
| kh_put_oid(&set->set, *oid, &added); | |
| return !added; | |
| } | |
| int oidset_remove(struct oidset *set, const struct object_id *oid) | |
| { | |
| khiter_t pos = kh_get_oid(&set->set, *oid); | |
| if (pos == kh_end(&set->set)) | |
| return 0; | |
| kh_del_oid(&set->set, pos); | |
| return 1; | |
| } | |
| void oidset_clear(struct oidset *set) | |
| { | |
| kh_release_oid(&set->set); | |
| oidset_init(set, 0); | |
| } |