diff options
author | Connor Abbott <[email protected]> | 2014-07-08 12:20:59 -0700 |
---|---|---|
committer | Matt Turner <[email protected]> | 2014-07-15 11:16:16 -0700 |
commit | 7b0f69225afb362ec2681d9b36eae2d035b10c00 (patch) | |
tree | c710098290c7f5baa502301e61fa10f8b27d78e1 | |
parent | 28c4fd4bc6a5417d73dcbc11e022d82ebabc5b36 (diff) |
exec_list: Add a function to give the length of a list.
v2 [mattst88]: Remove trailing whitespace. Rename get_size to length.
Mark as const.
Reviewed-by: Ian Romanick <[email protected]> [v1]
Reviewed-by: Matt Turner <[email protected]>
Signed-off-by: Connor Abbott <[email protected]>
-rw-r--r-- | src/glsl/list.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/glsl/list.h b/src/glsl/list.h index 66028f649d4..3cc48cef644 100644 --- a/src/glsl/list.h +++ b/src/glsl/list.h @@ -325,6 +325,8 @@ struct exec_list { const exec_node *get_tail() const; exec_node *get_tail(); + unsigned length() const; + void push_head(exec_node *n); void push_tail(exec_node *n); void push_degenerate_list_at_head(exec_node *n); @@ -405,6 +407,19 @@ exec_list_get_tail(struct exec_list *list) return !exec_list_is_empty(list) ? list->tail_pred : NULL; } +static inline unsigned +exec_list_length(const struct exec_list *list) +{ + unsigned size = 0; + + for (struct exec_node *node = list->head; node->next != NULL; + node = node->next) { + size++; + } + + return size; +} + static inline void exec_list_push_head(struct exec_list *list, struct exec_node *n) { @@ -537,6 +552,11 @@ inline exec_node *exec_list::get_tail() return exec_list_get_tail(this); } +inline unsigned exec_list::length() const +{ + return exec_list_length(this); +} + inline void exec_list::push_head(exec_node *n) { exec_list_push_head(this, n); |