diff --git a/blob.h b/blob.h new file mode 100644 index 0000000000..5cbf6d65ee --- /dev/null +++ b/blob.h @@ -0,0 +1,14 @@ +#ifndef BLOB_H +#define BLOB_H + +#include "object.h" + +extern const char *blob_type; + +struct blob { + struct object object; +}; + +struct blob *lookup_blob(unsigned char *sha1); + +#endif /* BLOB_H */ diff --git a/commit.h b/commit.h new file mode 100644 index 0000000000..4afd27b109 --- /dev/null +++ b/commit.h @@ -0,0 +1,27 @@ +#ifndef COMMIT_H +#define COMMIT_H + +#include "object.h" +#include "tree.h" + +struct commit_list { + struct commit *item; + struct commit_list *next; +}; + +struct commit { + struct object object; + unsigned long date; + struct commit_list *parents; + struct tree *tree; +}; + +extern const char *commit_type; + +struct commit *lookup_commit(unsigned char *sha1); + +int parse_commit(struct commit *item); + +void free_commit_list(struct commit_list *list); + +#endif /* COMMIT_H */ diff --git a/object.h b/object.h new file mode 100644 index 0000000000..bc607fd55f --- /dev/null +++ b/object.h @@ -0,0 +1,29 @@ +#ifndef OBJECT_H +#define OBJECT_H + +struct object_list { + struct object *item; + struct object_list *next; +}; + +struct object { + unsigned parsed : 1; + unsigned used : 1; + unsigned int flags; + unsigned char sha1[20]; + const char *type; + struct object_list *refs; +}; + +int nr_objs; +struct object **objs; + +struct object *lookup_object(unsigned char *sha1); + +void created_object(unsigned char *sha1, struct object *obj); + +void add_ref(struct object *refer, struct object *target); + +void mark_reachable(struct object *obj, unsigned int mask); + +#endif /* OBJECT_H */ diff --git a/tree.h b/tree.h new file mode 100644 index 0000000000..4d5496de30 --- /dev/null +++ b/tree.h @@ -0,0 +1,17 @@ +#ifndef TREE_H +#define TREE_H + +#include "object.h" + +extern const char *tree_type; + +struct tree { + struct object object; + unsigned has_full_path : 1; +}; + +struct tree *lookup_tree(unsigned char *sha1); + +int parse_tree(struct tree *tree); + +#endif /* TREE_H */