From: Lukas P <luk.puehringer@xxxxxxxxx> 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 <lukas.puehringer@xxxxxxx> --- 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