blob: 6efff003e2120e3cc5a82cda5bde904bfefa786d [file] [log] [blame]
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -07001#ifndef TREE_H
2#define TREE_H
3
4#include "object.h"
5
Nguyễn Thái Ngọc Duye0920732018-11-18 17:47:56 +01006struct repository;
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
Nguyễn Thái Ngọc Duye0920732018-11-18 17:47:56 +010015extern const char *tree_type;
16
Stefan Bellerf58a6cb2018-06-28 18:22:09 -070017struct tree *lookup_tree(struct repository *r, const struct object_id *oid);
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070018
Nicolas Pitrebd2c39f2005-05-06 13:48:34 -040019int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size);
20
Jeff King9cc2b072015-06-01 05:56:26 -040021int parse_tree_gently(struct tree *tree, int quiet_on_missing);
22static inline int parse_tree(struct tree *tree)
23{
24 return parse_tree_gently(tree, 0);
25}
Jeff King6e454b92013-06-05 18:37:39 -040026void free_tree_buffer(struct tree *tree);
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070027
Daniel Barkalow77675e22005-09-05 02:03:51 -040028/* Parses and returns the tree in the given ent, chasing tags and commits. */
brian m. carlsona9dbc172017-05-06 22:10:37 +000029struct tree *parse_tree_indirect(const struct object_id *oid);
Daniel Barkalow77675e22005-09-05 02:03:51 -040030
Elijah Newren70912f62020-12-13 08:04:25 +000031int cmp_cache_name_compare(const void *a_, const void *b_);
32
Linus Torvalds3c5e8462005-11-26 09:38:20 -080033#define READ_TREE_RECURSIVE 1
Ævar Arnfjörð Bjarmason47957482021-03-20 23:37:51 +010034typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, void *);
Linus Torvalds3c5e8462005-11-26 09:38:20 -080035
Ævar Arnfjörð Bjarmason6c9fc422021-03-20 23:37:50 +010036int read_tree_at(struct repository *r,
37 struct tree *tree, struct strbuf *base,
Ævar Arnfjörð Bjarmason6c9fc422021-03-20 23:37:50 +010038 const struct pathspec *pathspec,
39 read_tree_fn_t fn, void *context);
40
Ævar Arnfjörð Bjarmason47957482021-03-20 23:37:51 +010041int read_tree(struct repository *r,
42 struct tree *tree,
43 const struct pathspec *pathspec,
44 read_tree_fn_t fn, void *context);
45
Daniel Barkalow6eb8ae02005-04-18 11:39:48 -070046#endif /* TREE_H */