summaryrefslogtreecommitdiff
path: root/decorate.h
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2017-12-08 00:14:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-12-08 17:16:27 (GMT)
commitddd3e3124276133d0c7e902287ab4113f660f6d7 (patch)
treee4e7b903528eb62e81a9f8660a40aa3ddb3ff14c /decorate.h
parent95ec6b1b3393eb6e26da40c565520a8db9796e9f (diff)
downloadgit-ddd3e3124276133d0c7e902287ab4113f660f6d7.zip
git-ddd3e3124276133d0c7e902287ab4113f660f6d7.tar.gz
git-ddd3e3124276133d0c7e902287ab4113f660f6d7.tar.bz2
decorate: clean up and document API
Improve the names of the identifiers in decorate.h, document them, and add an example of how to use these functions. The example is compiled and run as part of the test suite. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'decorate.h')
-rw-r--r--decorate.h49
1 files changed, 46 insertions, 3 deletions
diff --git a/decorate.h b/decorate.h
index e732804..9014c1e 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