1#ifndef OIDSET_H 2#define OIDSET_H 3 4#include"oidmap.h" 5 6/** 7 * This API is similar to sha1-array, in that it maintains a set of object ids 8 * in a memory-efficient way. The major differences are: 9 * 10 * 1. It uses a hash, so we can do online duplicate removal, rather than 11 * sort-and-uniq at the end. This can reduce memory footprint if you have 12 * a large list of oids with many duplicates. 13 * 14 * 2. The per-unique-oid memory footprint is slightly higher due to hash 15 * table overhead. 16 */ 17 18/** 19 * A single oidset; should be zero-initialized (or use OIDSET_INIT). 20 */ 21struct oidset { 22struct oidmap map; 23}; 24 25#define OIDSET_INIT { OIDMAP_INIT } 26 27/** 28 * Returns true iff `set` contains `oid`. 29 */ 30intoidset_contains(const struct oidset *set,const struct object_id *oid); 31 32/** 33 * Insert the oid into the set; a copy is made, so "oid" does not need 34 * to persist after this function is called. 35 * 36 * Returns 1 if the oid was already in the set, 0 otherwise. This can be used 37 * to perform an efficient check-and-add. 38 */ 39intoidset_insert(struct oidset *set,const struct object_id *oid); 40 41/** 42 * Remove all entries from the oidset, freeing any resources associated with 43 * it. 44 */ 45voidoidset_clear(struct oidset *set); 46 47#endif/* OIDSET_H */