summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorConnor Abbott <[email protected]>2014-07-08 12:20:58 -0700
committerMatt Turner <[email protected]>2014-07-15 11:16:16 -0700
commit28c4fd4bc6a5417d73dcbc11e022d82ebabc5b36 (patch)
tree96e44b27495c66d9aeda3229ad817beed48a9162 /src
parent9a723b970e76b27829cd6ce6123a4958472a60df (diff)
exec_list: Add a prepend function.
This complements the existing append function. It's implemented in a rather simple way right now; it could be changed if performance is a concern. Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Matt Turner <[email protected]> Signed-off-by: Connor Abbott <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/glsl/list.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/glsl/list.h b/src/glsl/list.h
index a4444bda9e6..66028f649d4 100644
--- a/src/glsl/list.h
+++ b/src/glsl/list.h
@@ -345,9 +345,15 @@ struct exec_list {
void move_nodes_to(exec_list *target);
/**
- * Append all nodes from the source list to the target list
+ * Append all nodes from the source list to the end of the target list
*/
void append_list(exec_list *source);
+
+ /**
+ * Prepend all nodes from the source list to the beginning of the target
+ * list
+ */
+ void prepend_list(exec_list *source);
#endif
};
@@ -479,6 +485,13 @@ exec_list_append(struct exec_list *list, struct exec_list *source)
}
static inline void
+exec_list_prepend(struct exec_list *list, struct exec_list *source)
+{
+ exec_list_append(source, list);
+ exec_list_move_nodes_to(source, list);
+}
+
+static inline void
exec_node_insert_list_before(struct exec_node *n, struct exec_list *before)
{
if (exec_list_is_empty(before))
@@ -554,6 +567,11 @@ inline void exec_list::append_list(exec_list *source)
exec_list_append(this, source);
}
+inline void exec_list::prepend_list(exec_list *source)
+{
+ exec_list_prepend(this, source);
+}
+
inline void exec_node::insert_before(exec_list *before)
{
exec_node_insert_list_before(this, before);