#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