diff options
author | Matt Turner <mattst88@gmail.com> | 2014-07-10 10:39:19 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2014-07-15 10:12:29 -0700 |
commit | 7b962a4e6bf4758a5a9994649bd87735657d9a9a (patch) | |
tree | ee83f211eae2ec9f1fc4ee883077eca95d11948f /src/glsl/ir_hierarchical_visitor.h | |
parent | 76caaedd7e6b5c9e1c3b4c951d5820df9f419228 (diff) | |
download | external_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.h | 29 |
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); |