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