strfilter.h revision e6817ec1d8ab31fc7b01906e305f848542df6413
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 */ 15struct 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 */ 22struct 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 */ 35struct 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 */ 44bool 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 */ 52void strfilter__delete(struct strfilter *self); 53 54#endif 55