summaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-03-13 00:01:52 -0800
committerLibravatar Junio C Hamano <junkio@cox.net>2006-03-13 00:01:52 -0800
commit4a6c77cc0a2c9826d532c0ef1da4def8d8188584 (patch)
tree0e841ad332030a65f2ed0c77f2a4c18db544e18f /commit.h
parentannotate-tests: override VISUAL when running tests. (diff)
parentblame: Rename detection (take 2) (diff)
downloadtgif-4a6c77cc0a2c9826d532c0ef1da4def8d8188584.tar.xz
Merge branch 'fk/blame'
* fk/blame: blame: Rename detection (take 2) rev-lib: Make it easy to do rename tracking (take 2) Make it possible to not clobber object.util in sort_in_topological_order (take 2)
Diffstat (limited to 'commit.h')
-rw-r--r--commit.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/commit.h b/commit.h
index 70a7c75e65..98682b232a 100644
--- a/commit.h
+++ b/commit.h
@@ -65,15 +65,29 @@ int count_parents(struct commit * commit);
/*
* Performs an in-place topological sort of list supplied.
*
- * Pre-conditions:
+ * Pre-conditions for sort_in_topological_order:
* all commits in input list and all parents of those
* commits must have object.util == NULL
- *
- * Post-conditions:
+ *
+ * Pre-conditions for sort_in_topological_order_fn:
+ * all commits in input list and all parents of those
+ * commits must have getter(commit) == NULL
+ *
+ * Post-conditions:
* invariant of resulting list is:
* a reachable from b => ord(b) < ord(a)
* in addition, when lifo == 0, commits on parallel tracks are
* sorted in the dates order.
*/
+
+typedef void (*topo_sort_set_fn_t)(struct commit*, void *data);
+typedef void* (*topo_sort_get_fn_t)(struct commit*);
+
+void topo_sort_default_setter(struct commit *c, void *data);
+void *topo_sort_default_getter(struct commit *c);
+
void sort_in_topological_order(struct commit_list ** list, int lifo);
+void sort_in_topological_order_fn(struct commit_list ** list, int lifo,
+ topo_sort_set_fn_t setter,
+ topo_sort_get_fn_t getter);
#endif /* COMMIT_H */