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 { 20const char*s; 21unsigned long ul;/* used for sorting when not FIELD_STR */ 22}; 23 24struct ref_sorting { 25struct ref_sorting *next; 26int atom;/* index into used_atom array (internal) */ 27unsigned reverse :1; 28}; 29 30struct ref_array_item { 31unsigned char objectname[20]; 32int flag; 33const char*symref; 34struct atom_value *value; 35char refname[FLEX_ARRAY]; 36}; 37 38struct ref_array { 39int nr, alloc; 40struct ref_array_item **items; 41}; 42 43struct ref_filter { 44const char**name_patterns; 45}; 46 47struct ref_filter_cbdata { 48struct ref_array *array; 49struct 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 */ 58intfilter_refs(struct ref_array *array,struct ref_filter *filter,unsigned int type); 59/* Clear all memory allocated to ref_array */ 60voidref_array_clear(struct ref_array *array); 61/* Parse format string and sort specifiers */ 62intparse_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 */ 64intverify_ref_format(const char*format); 65/* Sort the given ref_array as per the ref_sorting provided */ 66voidref_array_sort(struct ref_sorting *sort,struct ref_array *array); 67/* Print the ref using the given format and quote_style */ 68voidshow_ref_array_item(struct ref_array_item *info,const char*format,int quote_style); 69/* Callback function for parsing the sort option */ 70intparse_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 */