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 */ 9struct 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 */ 16struct 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 */ 29struct strfilter *strfilter__new(const char *rules, const char **err); 30 31/** 32 * strfilter__compare - compare given string and a string filter 33 * @filter: String filter 34 * @str: target string 35 * 36 * Compare @str and @filter. Return true if the str match the rule 37 */ 38bool strfilter__compare(struct strfilter *filter, const char *str); 39 40/** 41 * strfilter__delete - delete a string filter 42 * @filter: String filter to delete 43 * 44 * Delete @filter. 45 */ 46void strfilter__delete(struct strfilter *filter); 47 48#endif 49