]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.h
Handle expression replacement through TraversingVisitor
[libs/gl.git] / source / glsl / optimize.h
index 4663c12ec12e6ffcaf4fe946fff5bbc36cc5ed90..26076452efe58776ac092a8ce6ad840f63345b14 100644 (file)
@@ -83,21 +83,11 @@ public:
        bool apply(Stage &);
 
 private:
-       void visit_and_inline(RefPtr<Expression> &);
-
+       virtual void visit(RefPtr<Expression> &);
        virtual void visit(Block &);
-       virtual void visit(UnaryExpression &);
-       virtual void visit(BinaryExpression &);
-       virtual void visit(Assignment &a) { visit(static_cast<BinaryExpression &>(a)); }
-       virtual void visit(MemberAccess &);
-       virtual void visit(Swizzle &);
        virtual void visit(FunctionCall &);
-       virtual void visit(ExpressionStatement &);
-       virtual void visit(VariableDeclaration &);
        virtual void visit(FunctionDeclaration &);
-       virtual void visit(Conditional &);
        virtual void visit(Iteration &);
-       virtual void visit(Return &);
 };
 
 /** Inlines variables into expressions.  Variables with trivial values (those
@@ -138,6 +128,7 @@ private:
        void visit_and_record(RefPtr<Expression> &, const Operator *, bool);
        void inline_expression(Expression &, RefPtr<Expression> &, const Operator *, const Operator *, bool);
        virtual void visit(Block &);
+       virtual void visit(RefPtr<Expression> &);
        virtual void visit(VariableReference &);
        virtual void visit(MemberAccess &);
        virtual void visit(Swizzle &);
@@ -146,9 +137,7 @@ private:
        virtual void visit(Assignment &);
        virtual void visit(FunctionCall &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(Conditional &);
        virtual void visit(Iteration &);
-       virtual void visit(Return &);
 };
 
 /** Removes conditional statements and loops where the condition can be