diff options
Diffstat (limited to 'decorate.h')
-rw-r--r-- | decorate.h | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/decorate.h b/decorate.h index e7328044ff..9014c1e996 100644 --- a/decorate.h +++ b/decorate.h @@ -1,18 +1,61 @@ #ifndef DECORATE_H #define DECORATE_H -struct object_decoration { +/* + * 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; - unsigned int size, nr; - struct object_decoration *hash; + + /* + * 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. + */ extern 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. + */ extern void *lookup_decoration(struct decoration *n, const struct object *obj); #endif |