blob: d24786cba2ca91d0bffd63490b4f71ac4a58de13 [file] [log] [blame]
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -07001#ifndef TREE_H
2#define TREE_H
3
4#include "object.h"
5
6extern const char *tree_type;
Nguyễn Thái Ngọc Duy6a0b0b62014-11-30 16:05:00 +07007struct strbuf;
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -07008
9struct tree {
10 struct object object;
Linus Torvalds136f2e52006-05-29 12:16:12 -070011 void *buffer;
12 unsigned long size;
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070013};
14
Jason McMullan5d6ccf52005-06-03 11:05:39 -040015struct tree *lookup_tree(const unsigned char *sha1);
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070016
Nicolas Pitrebd2c39f2005-05-06 13:48:34 -040017int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size);
18
Jeff King9cc2b072015-06-01 05:56:26 -040019int parse_tree_gently(struct tree *tree, int quiet_on_missing);
20static inline int parse_tree(struct tree *tree)
21{
22 return parse_tree_gently(tree, 0);
23}
Jeff King6e454b92013-06-05 18:37:39 -040024void free_tree_buffer(struct tree *tree);
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070025
Daniel Barkalow77675e22005-09-05 02:03:51 -040026/* Parses and returns the tree in the given ent, chasing tags and commits. */
27struct tree *parse_tree_indirect(const unsigned char *sha1);
28
Linus Torvalds3c5e8462005-11-26 09:38:20 -080029#define READ_TREE_RECURSIVE 1
Nguyễn Thái Ngọc Duy6a0b0b62014-11-30 16:05:00 +070030typedef int (*read_tree_fn_t)(const unsigned char *, struct strbuf *, const char *, unsigned int, int, void *);
Linus Torvalds3c5e8462005-11-26 09:38:20 -080031
Daniel Barkalow521698b2006-01-26 01:13:36 -050032extern int read_tree_recursive(struct tree *tree,
33 const char *base, int baselen,
Nguyễn Thái Ngọc Duy18e4f402013-07-14 15:35:52 +070034 int stage, const struct pathspec *pathspec,
René Scharfe671f0702008-07-14 21:22:12 +020035 read_tree_fn_t fn, void *context);
Linus Torvalds3c5e8462005-11-26 09:38:20 -080036
Nguyễn Thái Ngọc Duyf0096c02011-03-25 16:34:19 +070037extern int read_tree(struct tree *tree, int stage, struct pathspec *pathspec);
Linus Torvalds3c5e8462005-11-26 09:38:20 -080038
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070039#endif /* TREE_H */