about summary refs log tree commit diff
path: root/third_party/git/decorate.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/decorate.h')
-rw-r--r--third_party/git/decorate.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/third_party/git/decorate.h b/third_party/git/decorate.h
new file mode 100644
index 0000000000..ee43dee1f0
--- /dev/null
+++ b/third_party/git/decorate.h
@@ -0,0 +1,61 @@
+#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