diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-08-15 05:58:45 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-15 05:58:45 +0900 |
commit | d2dcd9101b1a940ce8496601ba871e47f84881ec (patch) | |
tree | 3de9cb11379d51eb01b568a20c8d7c585c89d10e /tools/perf/util/strlist.c | |
parent | 8010fbe7a67c2f993cbb11b9d8b7e98528256dd1 (diff) | |
parent | 606b4c992f3b28f906100f1b6eb49059909d8da7 (diff) | |
download | linux-d2dcd9101b1a940ce8496601ba871e47f84881ec.tar.gz linux-d2dcd9101b1a940ce8496601ba871e47f84881ec.tar.xz |
Merge branch 'master' into sh/cachetlb
Diffstat (limited to 'tools/perf/util/strlist.c')
-rw-r--r-- | tools/perf/util/strlist.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/tools/perf/util/strlist.c b/tools/perf/util/strlist.c index 025a78edfffe..7ad38171dc2b 100644 --- a/tools/perf/util/strlist.c +++ b/tools/perf/util/strlist.c @@ -64,6 +64,7 @@ int strlist__add(struct strlist *self, const char *new_entry) rb_link_node(&sn->rb_node, parent, p); rb_insert_color(&sn->rb_node, &self->entries); + ++self->nr_entries; return 0; } @@ -155,8 +156,9 @@ struct strlist *strlist__new(bool dupstr, const char *slist) struct strlist *self = malloc(sizeof(*self)); if (self != NULL) { - self->entries = RB_ROOT; - self->dupstr = dupstr; + self->entries = RB_ROOT; + self->dupstr = dupstr; + self->nr_entries = 0; if (slist && strlist__parse_list(self, slist) != 0) goto out_error; } @@ -182,3 +184,17 @@ void strlist__delete(struct strlist *self) free(self); } } + +struct str_node *strlist__entry(const struct strlist *self, unsigned int idx) +{ + struct rb_node *nd; + + for (nd = rb_first(&self->entries); nd; nd = rb_next(nd)) { + struct str_node *pos = rb_entry(nd, struct str_node, rb_node); + + if (!idx--) + return pos; + } + + return NULL; +} |