1 #ifndef __PERF_STRLIST_H 2 #define __PERF_STRLIST_H 3 4 #include <linux/rbtree.h> 5 #include <stdbool.h> 6 7 struct str_node { 8 struct rb_node rb_node; 9 const char *s; 10 }; 11 12 struct strlist { 13 struct rb_root entries; 14 unsigned int nr_entries; 15 bool dupstr; 16 }; 17 18 struct strlist *strlist__new(bool dupstr, const char *slist); 19 void strlist__delete(struct strlist *self); 20 21 void strlist__remove(struct strlist *self, struct str_node *sn); 22 int strlist__load(struct strlist *self, const char *filename); 23 int strlist__add(struct strlist *self, const char *str); 24 25 struct str_node *strlist__entry(const struct strlist *self, unsigned int idx); 26 bool strlist__has_entry(struct strlist *self, const char *entry); 27 28 static inline bool strlist__empty(const struct strlist *self) 29 { 30 return self->nr_entries == 0; 31 } 32 33 static inline unsigned int strlist__nr_entries(const struct strlist *self) 34 { 35 return self->nr_entries; 36 } 37 38 int strlist__parse_list(struct strlist *self, const char *s); 39 #endif /* __PERF_STRLIST_H */ 40