diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2010-06-22 18:37:12 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-06-23 09:25:28 -0700 |
commit | 7c09576a97be3490fe36fff9241b9c148ba558cb (patch) | |
tree | b9cd1e1c167286458eeb8f6f1569595b0b04ab0d /ir_hierarchical_visitor.h | |
parent | 53cdb7e51d85d4b4a35fba3ec200b27991b8488b (diff) |
ir_hierarchical_visitor: Add generic callback functionality
Diffstat (limited to 'ir_hierarchical_visitor.h')
-rw-r--r-- | ir_hierarchical_visitor.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ir_hierarchical_visitor.h b/ir_hierarchical_visitor.h index 85bc5bb150..af8f83cac5 100644 --- a/ir_hierarchical_visitor.h +++ b/ir_hierarchical_visitor.h @@ -76,6 +76,8 @@ enum ir_visitor_status { class ir_hierarchical_visitor { public: + ir_hierarchical_visitor(); + /** * \name Visit methods for leaf-node classes */ @@ -136,6 +138,22 @@ public: * Utility function to process a linked list of instructions with a visitor */ void run(struct exec_list *instructions); + +protected: + /** + * Callback function that is invoked on entry to 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 execpt one. + */ + void (*callback)(class ir_instruction *ir, void *data); + + /** + * Extra data parameter passed to the per-node callback function + */ + void *data; }; #endif /* IR_HIERARCHICAL_VISITOR_H */ |