37 lines
794 B
37 lines
794 B
#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); |
|
}
|
|
|