]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ATTR_H | |
2 | #define ATTR_H | |
3 | ||
4 | struct index_state; | |
5 | ||
6 | /* An attribute is a pointer to this opaque structure */ | |
7 | struct git_attr; | |
8 | ||
9 | /* opaque structures used internally for attribute collection */ | |
10 | struct all_attrs_item; | |
11 | struct attr_stack; | |
12 | struct index_state; | |
13 | ||
14 | /* | |
15 | * Given a string, return the gitattribute object that | |
16 | * corresponds to it. | |
17 | */ | |
18 | const struct git_attr *git_attr(const char *); | |
19 | ||
20 | /* Internal use */ | |
21 | extern const char git_attr__true[]; | |
22 | extern const char git_attr__false[]; | |
23 | ||
24 | /* For public to check git_attr_check results */ | |
25 | #define ATTR_TRUE(v) ((v) == git_attr__true) | |
26 | #define ATTR_FALSE(v) ((v) == git_attr__false) | |
27 | #define ATTR_UNSET(v) ((v) == NULL) | |
28 | ||
29 | /* | |
30 | * Send one or more git_attr_check to git_check_attrs(), and | |
31 | * each 'value' member tells what its value is. | |
32 | * Unset one is returned as NULL. | |
33 | */ | |
34 | struct attr_check_item { | |
35 | const struct git_attr *attr; | |
36 | const char *value; | |
37 | }; | |
38 | ||
39 | struct attr_check { | |
40 | int nr; | |
41 | int alloc; | |
42 | struct attr_check_item *items; | |
43 | int all_attrs_nr; | |
44 | struct all_attrs_item *all_attrs; | |
45 | struct attr_stack *stack; | |
46 | }; | |
47 | ||
48 | struct attr_check *attr_check_alloc(void); | |
49 | struct attr_check *attr_check_initl(const char *, ...); | |
50 | struct attr_check *attr_check_dup(const struct attr_check *check); | |
51 | ||
52 | struct attr_check_item *attr_check_append(struct attr_check *check, | |
53 | const struct git_attr *attr); | |
54 | ||
55 | void attr_check_reset(struct attr_check *check); | |
56 | void attr_check_clear(struct attr_check *check); | |
57 | void attr_check_free(struct attr_check *check); | |
58 | ||
59 | /* | |
60 | * Return the name of the attribute represented by the argument. The | |
61 | * return value is a pointer to a null-delimited string that is part | |
62 | * of the internal data structure; it should not be modified or freed. | |
63 | */ | |
64 | const char *git_attr_name(const struct git_attr *); | |
65 | ||
66 | void git_check_attr(const struct index_state *istate, | |
67 | const char *path, struct attr_check *check); | |
68 | ||
69 | /* | |
70 | * Retrieve all attributes that apply to the specified path. | |
71 | * check holds the attributes and their values. | |
72 | */ | |
73 | void git_all_attrs(const struct index_state *istate, | |
74 | const char *path, struct attr_check *check); | |
75 | ||
76 | enum git_attr_direction { | |
77 | GIT_ATTR_CHECKIN, | |
78 | GIT_ATTR_CHECKOUT, | |
79 | GIT_ATTR_INDEX | |
80 | }; | |
81 | void git_attr_set_direction(enum git_attr_direction new_direction); | |
82 | ||
83 | void attr_start(void); | |
84 | ||
85 | #endif /* ATTR_H */ |