glsl: add ir_control_flow_visitor
authorLuca Barbieri <luca@luca-barbieri.com>
Mon, 6 Sep 2010 22:22:34 +0000 (00:22 +0200)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 13 Sep 2010 20:03:09 +0000 (13:03 -0700)
This is just a subclass of ir_visitor with empty implementations of all
the visit methods for non-control flow nodes.

Used to avoid duplicating that in ir_visitor subclasses.

ir_hierarchical_visitor is another way to solve this, but is less natural
for some applications.

src/glsl/ir_visitor.h

index b87d737318080fd0d163f7b0261c0c66e7302bca..7dd35fe1dc3aef8a286248442be8a12b7e2ab230 100644 (file)
@@ -64,4 +64,21 @@ public:
    /*@}*/
 };
 
+/* NOTE: function calls may never return due to discards inside them
+ * This is usually not an issue, but if it is, keep it in mind
+ */
+class ir_control_flow_visitor : public ir_visitor {
+public:
+   virtual void visit(class ir_variable *) {}
+   virtual void visit(class ir_expression *) {}
+   virtual void visit(class ir_texture *) {}
+   virtual void visit(class ir_swizzle *) {}
+   virtual void visit(class ir_dereference_variable *) {}
+   virtual void visit(class ir_dereference_array *) {}
+   virtual void visit(class ir_dereference_record *) {}
+   virtual void visit(class ir_assignment *) {}
+   virtual void visit(class ir_constant *) {}
+   virtual void visit(class ir_call *) {}
+};
+
 #endif /* IR_VISITOR_H */