diff options
Diffstat (limited to 'third_party/git/decorate.h')
-rw-r--r-- | third_party/git/decorate.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/third_party/git/decorate.h b/third_party/git/decorate.h new file mode 100644 index 000000000000..ee43dee1f008 --- /dev/null +++ b/third_party/git/decorate.h @@ -0,0 +1,61 @@ +#ifndef DECORATE_H +#define DECORATE_H + +/* + * A data structure that associates Git objects to void pointers. See + * t/helper/test-example-decorate.c for a demonstration of how to use these + * functions. + */ + +/* + * An entry in the data structure. + */ +struct decoration_entry { + const struct object *base; + void *decoration; +}; + +/* + * The data structure. + * + * This data structure must be zero-initialized. + */ +struct decoration { + /* + * Not used by the decoration mechanism. Clients may use this for + * whatever they want. + */ + const char *name; + + /* + * The capacity of "entries". + */ + unsigned int size; + + /* + * The number of real Git objects (that is, entries with non-NULL + * "base"). + */ + unsigned int nr; + + /* + * The entries. This is an array of size "size", containing nr entries + * with non-NULL "base" and (size - nr) entries with NULL "base". + */ + struct decoration_entry *entries; +}; + +/* + * Add an association from the given object to the given pointer (which may be + * NULL), returning the previously associated pointer. If there is no previous + * association, this function returns NULL. + */ +void *add_decoration(struct decoration *n, const struct object *obj, void *decoration); + +/* + * Return the pointer associated to the given object. If there is no + * association, this function returns NULL. + */ +void *lookup_decoration(struct decoration *n, const struct object *obj); + +#endif |