|  | #ifndef PATCH_IDS_H | 
|  | #define PATCH_IDS_H | 
|  |  | 
|  | #include "diff.h" | 
|  | #include "hashmap.h" | 
|  |  | 
|  | struct commit; | 
|  | struct object_id; | 
|  | struct repository; | 
|  |  | 
|  | struct patch_id { | 
|  | struct hashmap_entry ent; | 
|  | struct object_id patch_id; | 
|  | struct commit *commit; | 
|  | }; | 
|  |  | 
|  | struct patch_ids { | 
|  | struct hashmap patches; | 
|  | struct diff_options diffopts; | 
|  | }; | 
|  |  | 
|  | int commit_patch_id(struct commit *commit, struct diff_options *options, | 
|  | struct object_id *oid, int, int); | 
|  | int init_patch_ids(struct repository *, struct patch_ids *); | 
|  | int free_patch_ids(struct patch_ids *); | 
|  |  | 
|  | /* Add a patch_id for a single commit to the set. */ | 
|  | struct patch_id *add_commit_patch_id(struct commit *, struct patch_ids *); | 
|  |  | 
|  | /* Returns true if the patch-id of "commit" is present in the set. */ | 
|  | int has_commit_patch_id(struct commit *commit, struct patch_ids *); | 
|  |  | 
|  | /* | 
|  | * Iterate over all commits in the set whose patch id matches that of | 
|  | * "commit", like: | 
|  | * | 
|  | *   struct patch_id *cur; | 
|  | *   for (cur = patch_id_iter_first(commit, ids); | 
|  | *        cur; | 
|  | *        cur = patch_id_iter_next(cur, ids) { | 
|  | *           ... look at cur->commit | 
|  | *   } | 
|  | */ | 
|  | struct patch_id *patch_id_iter_first(struct commit *commit, struct patch_ids *); | 
|  | struct patch_id *patch_id_iter_next(struct patch_id *cur, struct patch_ids *); | 
|  |  | 
|  | #endif /* PATCH_IDS_H */ |