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