From: Lukas P <redacted>
Ref-filter functions are useful for printing git object information
without a format specifier. However, some functions may not want to use
a complete ref-array, and just a single item instead. Expose
create/show/free functions for ref_array_items through wrappers around
the original functions.
Signed-off-by: Lukas Puehringer <redacted>
---
ref-filter.c | 20 ++++++++++++++++++++
ref-filter.h | 10 ++++++++++
2 files changed, 30 insertions(+)
diff --git a/ref-filter.c b/ref-filter.c
index 9adbb8a..b013799 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -1329,6 +1329,14 @@ static struct ref_array_item *new_ref_array_item(const char *refname,
return ref;
}
+/* Wrapper: Create ref_array_item w/o referencing container in function name */
+struct ref_array_item *new_ref_item(const char *refname,
+ const unsigned char *objectname,
+ int flag)
+{
+ return new_ref_array_item(refname, objectname, flag);
+}
+
static int filter_ref_kind(struct ref_filter *filter, const char *refname)
{
unsigned int i;@@ -1426,6 +1434,12 @@ static void free_array_item(struct ref_array_item *item)
free(item);
}
+/* Wrapper: Free ref_array_item w/o referencing container in function name */
+void free_ref_item(struct ref_array_item *ref_item)
+{
+ free_array_item(ref_item);
+}
+
/* Free all memory allocated for ref_array */
void ref_array_clear(struct ref_array *array)
{@@ -1637,6 +1651,12 @@ void show_ref_array_item(struct ref_array_item *info, const char *format, int qu
putchar('\n');
}
+/* Wrapper: Show ref_array_item w/o referencing container in function name */
+void show_ref_item(struct ref_array_item *ref_item, const char *format, int quote_style)
+{
+ show_ref_array_item(ref_item, format, quote_style);
+}
+
/* If no sorting option is given, use refname to sort as default */
struct ref_sorting *ref_default_sorting(void)
{diff --git a/ref-filter.h b/ref-filter.h
index 14d435e..0f0ffe9 100644
--- a/ref-filter.h
+++ b/ref-filter.h
@@ -107,4 +107,14 @@ struct ref_sorting *ref_default_sorting(void);
/* Function to parse --merged and --no-merged options */
int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset);
+/*
+ * Wrappers exposing the ref_array_item data structure independently
+ * of the container ref_array, e.g. to format-print individual refs.
+ */
+struct ref_array_item *new_ref_item(const char *refname,
+ const unsigned char *objectname, int flag);
+void show_ref_item(struct ref_array_item *ref_item, const char *format,
+ int quote_style);
+void free_ref_item(struct ref_array_item *ref_item);
+
#endif /* REF_FILTER_H */
--
2.10.0