diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2007-11-02 13:32:58 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-04 01:54:20 -0700 |
commit | 23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543 (patch) | |
tree | c220a3c6a6e6cda4c6b0119e5a837823157cde12 /commit.h | |
parent | 140dd77a5cb2e61dcb942e245a2474fae95e42a5 (diff) | |
download | git-23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543.tar.gz |
Simplify topo-sort logic
.. by not using quite so much indirection.
This currently grows the "struct commit" a bit, which could be avoided by
using a union for "util" and "indegree" (the topo-sort used to use "util"
anyway, so you cannot use them together), but for now the goal of this was
to simplify, not optimize.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'commit.h')
-rw-r--r-- | commit.h | 20 |
1 files changed, 1 insertions, 19 deletions
@@ -14,6 +14,7 @@ struct commit_list { struct commit { struct object object; void *util; + unsigned int indegree; unsigned long date; struct commit_list *parents; struct tree *tree; @@ -84,31 +85,12 @@ void clear_commit_marks(struct commit *commit, unsigned int mark); /* * Performs an in-place topological sort of list supplied. * - * Pre-conditions for sort_in_topological_order: - * all commits in input list and all parents of those - * commits must have object.util == NULL - * - * 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); struct commit_graft { unsigned char sha1[20]; |