1 #ifndef __PERF_STRFILTER_H 2 #define __PERF_STRFILTER_H 3 /* General purpose glob matching filter */ 4 5 #include <linux/list.h> 6 #include <stdbool.h> 7 8 /* A node of string filter */ 9 struct strfilter_node { 10 struct strfilter_node *l; /* Tree left branche (for &,|) */ 11 struct strfilter_node *r; /* Tree right branche (for !,&,|) */ 12 const char *p; /* Operator or rule */ 13 }; 14 15 /* String filter */ 16 struct strfilter { 17 struct strfilter_node *root; 18 }; 19 20 /** 21 * strfilter__new - Create a new string filter 22 * @rules: Filter rule, which is a combination of glob expressions. 23 * @err: Pointer which points an error detected on @rules 24 * 25 * Parse @rules and return new strfilter. Return NULL if an error detected. 26 * In that case, *@err will indicate where it is detected, and *@err is NULL 27 * if a memory allocation is failed. 28 */ 29 struct strfilter *strfilter__new(const char *rules, const char **err); 30 31 /** 32 * strfilter__compare - compare given string and a string filter 33 * @self: String filter 34 * @str: target string 35 * 36 * Compare @str and @self. Return true if the str match the rule 37 */ 38 bool strfilter__compare(struct strfilter *self, const char *str); 39 40 /** 41 * strfilter__delete - delete a string filter 42 * @self: String filter to delete 43 * 44 * Delete @self. 45 */ 46 void strfilter__delete(struct strfilter *self); 47 48 #endif 49