2007-04-17 07:03:15 +08:00
|
|
|
#ifndef DECORATE_H
|
|
|
|
#define DECORATE_H
|
|
|
|
|
2017-12-08 08:14:24 +08:00
|
|
|
/*
|
|
|
|
* 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 {
|
2008-08-21 01:55:33 +08:00
|
|
|
const struct object *base;
|
2007-04-17 07:03:15 +08:00
|
|
|
void *decoration;
|
|
|
|
};
|
|
|
|
|
2017-12-08 08:14:24 +08:00
|
|
|
/*
|
|
|
|
* The data structure.
|
|
|
|
*
|
|
|
|
* This data structure must be zero-initialized.
|
|
|
|
*/
|
2007-04-17 07:03:15 +08:00
|
|
|
struct decoration {
|
2017-12-08 08:14:24 +08:00
|
|
|
/*
|
|
|
|
* Not used by the decoration mechanism. Clients may use this for
|
|
|
|
* whatever they want.
|
|
|
|
*/
|
2007-04-17 07:03:15 +08:00
|
|
|
const char *name;
|
2017-12-08 08:14:24 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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;
|
2007-04-17 07:03:15 +08:00
|
|
|
};
|
|
|
|
|
2017-12-08 08:14:24 +08:00
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
2019-04-29 16:28:14 +08:00
|
|
|
void *add_decoration(struct decoration *n, const struct object *obj, void *decoration);
|
2017-12-08 08:14:24 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Return the pointer associated to the given object. If there is no
|
|
|
|
* association, this function returns NULL.
|
|
|
|
*/
|
2019-04-29 16:28:14 +08:00
|
|
|
void *lookup_decoration(struct decoration *n, const struct object *obj);
|
2007-04-17 07:03:15 +08:00
|
|
|
|
|
|
|
#endif
|