summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir_hierarchical_visitor.h
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2014-07-10 10:39:19 -0700
committerMatt Turner <mattst88@gmail.com>2014-07-15 10:12:29 -0700
commit7b962a4e6bf4758a5a9994649bd87735657d9a9a (patch)
treeee83f211eae2ec9f1fc4ee883077eca95d11948f /src/glsl/ir_hierarchical_visitor.h
parent76caaedd7e6b5c9e1c3b4c951d5820df9f419228 (diff)
downloadexternal_mesa3d-7b962a4e6bf4758a5a9994649bd87735657d9a9a.zip
external_mesa3d-7b962a4e6bf4758a5a9994649bd87735657d9a9a.tar.gz
external_mesa3d-7b962a4e6bf4758a5a9994649bd87735657d9a9a.tar.bz2
glsl: Add callback_leave to ir_hierarchical_visitor.
Diffstat (limited to 'src/glsl/ir_hierarchical_visitor.h')
-rw-r--r--src/glsl/ir_hierarchical_visitor.h29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/glsl/ir_hierarchical_visitor.h b/src/glsl/ir_hierarchical_visitor.h
index bc89a04..faa52fd 100644
--- a/src/glsl/ir_hierarchical_visitor.h
+++ b/src/glsl/ir_hierarchical_visitor.h
@@ -163,14 +163,29 @@ public:
* \warning
* Visitor classes derived from \c ir_hierarchical_visitor \b may \b not
* invoke this function. This can be used, for example, to cause the
- * callback to be invoked on every node type execpt one.
+ * callback to be invoked on every node type except one.
*/
- void (*callback)(class ir_instruction *ir, void *data);
+ void (*callback_enter)(class ir_instruction *ir, void *data);
/**
- * Extra data parameter passed to the per-node callback function
+ * Callback function that is invoked on exit of each node visited.
+ *
+ * \warning
+ * Visitor classes derived from \c ir_hierarchical_visitor \b may \b not
+ * invoke this function. This can be used, for example, to cause the
+ * callback to be invoked on every node type except one.
+ */
+ void (*callback_leave)(class ir_instruction *ir, void *data);
+
+ /**
+ * Extra data parameter passed to the per-node callback_enter function
+ */
+ void *data_enter;
+
+ /**
+ * Extra data parameter passed to the per-node callback_leave function
*/
- void *data;
+ void *data_leave;
/**
* Currently in the LHS of an assignment?
@@ -181,8 +196,10 @@ public:
};
void visit_tree(ir_instruction *ir,
- void (*callback)(class ir_instruction *ir, void *data),
- void *data);
+ void (*callback_enter)(class ir_instruction *ir, void *data),
+ void *data_enter,
+ void (*callback_leave)(class ir_instruction *ir, void *data) = NULL,
+ void *data_leave = NULL);
ir_visitor_status visit_list_elements(ir_hierarchical_visitor *v, exec_list *l,
bool statement_list = true);