diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:34:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:34:27 +0000 |
commit | 4dbdc42d9e7c3968ff7f690d00680419c9b8cb0f (patch) | |
tree | 47c1d492e9c956c1cd2b74dbd3b9d8b0db44dc4e /decorate.h | |
parent | Initial commit. (diff) | |
download | git-4dbdc42d9e7c3968ff7f690d00680419c9b8cb0f.tar.xz git-4dbdc42d9e7c3968ff7f690d00680419c9b8cb0f.zip |
Adding upstream version 1:2.43.0.upstream/1%2.43.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'decorate.h')
-rw-r--r-- | decorate.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/decorate.h b/decorate.h new file mode 100644 index 0000000..cdeb17c --- /dev/null +++ b/decorate.h @@ -0,0 +1,71 @@ +#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); + +/* + * Clear all decoration entries, releasing any memory used by the structure. + * If free_cb is not NULL, it is called for every decoration value currently + * stored. + * + * After clearing, the decoration struct can be used again. The "name" field is + * retained. + */ +void clear_decoration(struct decoration *n, void (*free_cb)(void *)); + +#endif |