]> git.proxmox.com Git - libgit2.git/blobdiff - src/commit_list.h
New upstream version 1.3.0+dfsg.1
[libgit2.git] / src / commit_list.h
index d2f54b3ca6589975c19c20eed86053a7c50d67c7..aad39f3513b40f10d1589972c39eecb345f246d8 100644 (file)
@@ -7,28 +7,35 @@
 #ifndef INCLUDE_commit_list_h__
 #define INCLUDE_commit_list_h__
 
+#include "common.h"
+
 #include "git2/oid.h"
 
 #define PARENT1  (1 << 0)
 #define PARENT2  (1 << 1)
 #define RESULT   (1 << 2)
 #define STALE    (1 << 3)
+#define ALL_FLAGS (PARENT1 | PARENT2 | STALE | RESULT)
 
 #define PARENTS_PER_COMMIT     2
 #define COMMIT_ALLOC \
        (sizeof(git_commit_list_node) + PARENTS_PER_COMMIT * sizeof(git_commit_list_node *))
 
+#define FLAG_BITS 4
+
 typedef struct git_commit_list_node {
        git_oid oid;
-       uint32_t time;
+       int64_t time;
+       uint32_t generation;
        unsigned int seen:1,
                         uninteresting:1,
                         topo_delay:1,
                         parsed:1,
-                        flags : 4;
+                        added:1,
+                        flags : FLAG_BITS;
 
-       unsigned short in_degree;
-       unsigned short out_degree;
+       uint16_t in_degree;
+       uint16_t out_degree;
 
        struct git_commit_list_node **parents;
 } git_commit_list_node;
@@ -39,7 +46,8 @@ typedef struct git_commit_list {
 } git_commit_list;
 
 git_commit_list_node *git_commit_list_alloc_node(git_revwalk *walk);
-int git_commit_list_time_cmp(void *a, void *b);
+int git_commit_list_generation_cmp(const void *a, const void *b);
+int git_commit_list_time_cmp(const void *a, const void *b);
 void git_commit_list_free(git_commit_list **list_p);
 git_commit_list *git_commit_list_insert(git_commit_list_node *item, git_commit_list **list_p);
 git_commit_list *git_commit_list_insert_by_date(git_commit_list_node *item, git_commit_list **list_p);