aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConnor Abbott <[email protected]>2014-07-08 12:20:59 -0700
committerMatt Turner <[email protected]>2014-07-15 11:16:16 -0700
commit7b0f69225afb362ec2681d9b36eae2d035b10c00 (patch)
treec710098290c7f5baa502301e61fa10f8b27d78e1
parent28c4fd4bc6a5417d73dcbc11e022d82ebabc5b36 (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.h20
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);