| #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); |
| } |