1#ifndef REF_FILTER_H 2#define REF_FILTER_H 3 4#include "sha1-array.h" 5#include "refs.h" 6#include "commit.h" 7#include "parse-options.h" 8 9/* Quoting styles */ 10#define QUOTE_NONE 0 11#define QUOTE_SHELL 1 12#define QUOTE_PERL 2 13#define QUOTE_PYTHON 4 14#define QUOTE_TCL 8 15 16#define FILTER_REFS_INCLUDE_BROKEN 0x1 17#define FILTER_REFS_ALL 0x2 18 19struct atom_value { 20 const char *s; 21 unsigned long ul; /* used for sorting when not FIELD_STR */ 22}; 23 24struct ref_sorting { 25 struct ref_sorting *next; 26 int atom; /* index into used_atom array (internal) */ 27 unsigned reverse : 1; 28}; 29 30struct ref_array_item { 31 unsigned char objectname[20]; 32 int flag; 33 const char *symref; 34 struct atom_value *value; 35 char refname[FLEX_ARRAY]; 36}; 37 38struct ref_array { 39 int nr, alloc; 40 struct ref_array_item **items; 41}; 42 43struct ref_filter { 44 const char **name_patterns; 45}; 46 47struct ref_filter_cbdata { 48 struct ref_array *array; 49 struct ref_filter *filter; 50}; 51 52/* 53 * API for filtering a set of refs. Based on the type of refs the user 54 * has requested, we iterate through those refs and apply filters 55 * as per the given ref_filter structure and finally store the 56 * filtered refs in the ref_array structure. 57 */ 58int filter_refs(struct ref_array *array, struct ref_filter *filter, unsigned int type); 59/* Clear all memory allocated to ref_array */ 60void ref_array_clear(struct ref_array *array); 61/* Parse format string and sort specifiers */ 62int parse_ref_filter_atom(const char *atom, const char *ep); 63/* Used to verify if the given format is correct and to parse out the used atoms */ 64int verify_ref_format(const char *format); 65/* Sort the given ref_array as per the ref_sorting provided */ 66void ref_array_sort(struct ref_sorting *sort, struct ref_array *array); 67/* Print the ref using the given format and quote_style */ 68void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style); 69/* Callback function for parsing the sort option */ 70int parse_opt_ref_sorting(const struct option *opt, const char *arg, int unset); 71/* Default sort option based on refname */ 72struct ref_sorting *ref_default_sorting(void); 73 74#endif /* REF_FILTER_H */