diff options
Diffstat (limited to 'src/revwalk.h')
| -rw-r--r-- | src/revwalk.h | 58 |
1 files changed, 50 insertions, 8 deletions
diff --git a/src/revwalk.h b/src/revwalk.h index 270eb8c6b..d97e5ce8c 100644 --- a/src/revwalk.h +++ b/src/revwalk.h @@ -5,21 +5,63 @@ #include "git/revwalk.h" #include "commit.h" +#include "repository.h" +#include "hashtable.h" -struct git_revpool { - git_odb *db; +struct git_revwalk_commit; - git_commit_list iterator; - git_commit *(*next_commit)(git_commit_list *); +typedef struct git_revwalk_listnode { + struct git_revwalk_commit *walk_commit; + struct git_revwalk_listnode *next; + struct git_revwalk_listnode *prev; +} git_revwalk_listnode; - git_commit_list roots; - git_revpool_table *objects; +typedef struct git_revwalk_list { + struct git_revwalk_listnode *head; + struct git_revwalk_listnode *tail; + size_t size; +} git_revwalk_list; + + +struct git_revwalk_commit { + + git_commit *commit_object; + git_revwalk_list parents; + + unsigned short in_degree; + unsigned seen:1, + uninteresting:1, + topo_delay:1, + flags:25; +}; + +typedef struct git_revwalk_commit git_revwalk_commit; + +struct git_revwalk { + git_repository *repo; + + git_hashtable *commits; + git_revwalk_list iterator; + + git_revwalk_commit *(*next)(git_revwalk_list *); unsigned walking:1; unsigned int sorting; }; -void gitrp__prepare_walk(git_revpool *pool); -int gitrp__enroot(git_revpool *pool, git_commit *commit); + +void git_revwalk__prepare_walk(git_revwalk *walk); +int git_revwalk__enroot(git_revwalk *walk, git_commit *commit); + +int git_revwalk_list_push_back(git_revwalk_list *list, git_revwalk_commit *commit); +int git_revwalk_list_push_front(git_revwalk_list *list, git_revwalk_commit *obj); + +git_revwalk_commit *git_revwalk_list_pop_back(git_revwalk_list *list); +git_revwalk_commit *git_revwalk_list_pop_front(git_revwalk_list *list); + +void git_revwalk_list_clear(git_revwalk_list *list); + +void git_revwalk_list_timesort(git_revwalk_list *list); +void git_revwalk_list_toposort(git_revwalk_list *list); #endif /* INCLUDE_revwalk_h__ */ |
