xref: /openbmc/linux/tools/perf/util/strfilter.h (revision 588b48ca)
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  * @filter: String filter
34  * @str: target string
35  *
36  * Compare @str and @filter. Return true if the str match the rule
37  */
38 bool 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  */
46 void strfilter__delete(struct strfilter *filter);
47 
48 #endif
49