mesa: glGet: simplify the 'enum not found' condition
[mesa.git] / src / glsl / ir_rvalue_visitor.h
index 31a56beb9b80c4e7fb31dc60176420802e85d1a7..2179fa5a8f739b8c2e4de6db008d0a15ce7ce03d 100644 (file)
  * a pointer to each rvalue in the tree.
  */
 
-class ir_rvalue_visitor : public ir_hierarchical_visitor {
+class ir_rvalue_base_visitor : public ir_hierarchical_visitor {
+public:
+   ir_visitor_status rvalue_visit(ir_assignment *);
+   ir_visitor_status rvalue_visit(ir_call *);
+   ir_visitor_status rvalue_visit(ir_dereference_array *);
+   ir_visitor_status rvalue_visit(ir_dereference_record *);
+   ir_visitor_status rvalue_visit(ir_expression *);
+   ir_visitor_status rvalue_visit(ir_if *);
+   ir_visitor_status rvalue_visit(ir_return *);
+   ir_visitor_status rvalue_visit(ir_swizzle *);
+   ir_visitor_status rvalue_visit(ir_texture *);
+
+   virtual void handle_rvalue(ir_rvalue **rvalue) = 0;
+};
+
+class ir_rvalue_visitor : public ir_rvalue_base_visitor {
 public:
 
    virtual ir_visitor_status visit_leave(ir_assignment *);
@@ -42,6 +57,18 @@ public:
    virtual ir_visitor_status visit_leave(ir_return *);
    virtual ir_visitor_status visit_leave(ir_swizzle *);
    virtual ir_visitor_status visit_leave(ir_texture *);
+};
 
-   virtual void handle_rvalue(ir_rvalue **rvalue) = 0;
+class ir_rvalue_enter_visitor : public ir_rvalue_base_visitor {
+public:
+
+   virtual ir_visitor_status visit_enter(ir_assignment *);
+   virtual ir_visitor_status visit_enter(ir_call *);
+   virtual ir_visitor_status visit_enter(ir_dereference_array *);
+   virtual ir_visitor_status visit_enter(ir_dereference_record *);
+   virtual ir_visitor_status visit_enter(ir_expression *);
+   virtual ir_visitor_status visit_enter(ir_if *);
+   virtual ir_visitor_status visit_enter(ir_return *);
+   virtual ir_visitor_status visit_enter(ir_swizzle *);
+   virtual ir_visitor_status visit_enter(ir_texture *);
 };