aboutsummaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorFredrik Kuivinen <freku045@student.liu.se>2006-03-10 10:21:37 +0100
committerJunio C Hamano <junkio@cox.net>2006-03-10 22:11:14 -0800
commit6b6dcfc297722f5a5324c4cb22f45adccd4c84ef (patch)
tree839b51557d2d89249851a2990723ccba8b35dbaa /commit.h
parentf2561fda364ad984ef1441a80c90b0ee04f1a7c4 (diff)
downloadgit-6b6dcfc297722f5a5324c4cb22f45adccd4c84ef.tar.gz
git-6b6dcfc297722f5a5324c4cb22f45adccd4c84ef.tar.xz
Make it possible to not clobber object.util in sort_in_topological_order (take 2)
Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
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 70a7c75e6..98682b232 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 */