mirror of
https://github.com/git/git.git
synced 2024-11-28 04:23:30 +08:00
456b4dce4c
helper/test-example-decorate.c along with t9004-example.sh provide an example of how to use the functions in decorate.h (which provides a data structure that associates Git objects to void pointers) and also test their output. Migrate them to the new unit testing framework for better debugging and runtime performance. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Mentored-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com> Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
72 lines
1.7 KiB
C
72 lines
1.7 KiB
C
#ifndef DECORATE_H
|
|
#define DECORATE_H
|
|
|
|
/*
|
|
* A data structure that associates Git objects to void pointers. See
|
|
* t/unit-tests/t-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
|