Lines Matching defs:filter
30 void strfilter__delete(struct strfilter *filter)
32 if (filter) {
33 strfilter_node__delete(filter->root);
34 free(filter);
157 * Parse filter rule and return new strfilter.
162 struct strfilter *filter = zalloc(sizeof(*filter));
165 if (filter)
166 filter->root = strfilter_node__new(rules, &ep);
168 if (!filter || !filter->root || *ep != '\0') {
171 strfilter__delete(filter);
172 filter = NULL;
175 return filter;
178 static int strfilter__append(struct strfilter *filter, bool _or,
184 if (!filter || !rules)
193 root = strfilter_node__alloc(_or ? OP_or : OP_and, filter->root, right);
199 filter->root = root;
207 int strfilter__or(struct strfilter *filter, const char *rules, const char **err)
209 return strfilter__append(filter, true, rules, err);
212 int strfilter__and(struct strfilter *filter, const char *rules,
215 return strfilter__append(filter, false, rules, err);
238 /* Return true if STR matches the filter rules */
239 bool strfilter__compare(struct strfilter *filter, const char *str)
241 if (!filter)
243 return strfilter_node__compare(filter->root, str);
298 char *strfilter__string(struct strfilter *filter)
303 len = strfilter_node__sprint(filter->root, NULL);
309 strfilter_node__sprint(filter->root, ret);