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; 45struct sha1_array points_at; 46}; 47 48struct ref_filter_cbdata { 49struct ref_array *array; 50struct ref_filter *filter; 51}; 52 53/* 54 * API for filtering a set of refs. Based on the type of refs the user 55 * has requested, we iterate through those refs and apply filters 56 * as per the given ref_filter structure and finally store the 57 * filtered refs in the ref_array structure. 58 */ 59intfilter_refs(struct ref_array *array,struct ref_filter *filter,unsigned int type); 60/* Clear all memory allocated to ref_array */ 61voidref_array_clear(struct ref_array *array); 62/* Parse format string and sort specifiers */ 63intparse_ref_filter_atom(const char*atom,const char*ep); 64/* Used to verify if the given format is correct and to parse out the used atoms */ 65intverify_ref_format(const char*format); 66/* Sort the given ref_array as per the ref_sorting provided */ 67voidref_array_sort(struct ref_sorting *sort,struct ref_array *array); 68/* Print the ref using the given format and quote_style */ 69voidshow_ref_array_item(struct ref_array_item *info,const char*format,int quote_style); 70/* Callback function for parsing the sort option */ 71intparse_opt_ref_sorting(const struct option *opt,const char*arg,int unset); 72/* Default sort option based on refname */ 73struct ref_sorting *ref_default_sorting(void); 74 75#endif/* REF_FILTER_H */