]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.h
Adjust member access of the various visitors in the GLSL compiler
[libs/gl.git] / source / glsl / optimize.h
index 2e28d48a0dcbfe711057572cc7f5e1574dbe8789..cfebf0f782c46aee0c2bbc0730baf555b0081b8a 100644 (file)
@@ -10,7 +10,7 @@ namespace Msp {
 namespace GL {
 namespace SL {
 
-class InlineableFunctionLocator: public TraversingVisitor
+class InlineableFunctionLocator: private TraversingVisitor
 {
 private:
        std::map<FunctionDeclaration *, unsigned> refcounts;
@@ -22,12 +22,13 @@ public:
 
        const std::set<FunctionDeclaration *> &apply(Stage &s) { visit(s.content); return inlineable; }
 
-       using TraversingVisitor::visit;
+private:
        virtual void visit(FunctionCall &);
        virtual void visit(FunctionDeclaration &);
+       using TraversingVisitor::visit;
 };
 
-class FunctionInliner: public TraversingVisitor
+class FunctionInliner: private TraversingVisitor
 {
 private:
        std::set<FunctionDeclaration *> inlineable;
@@ -42,8 +43,7 @@ public:
 
 private:
        void visit_and_inline(RefPtr<Expression> &);
-public:
-       using TraversingVisitor::visit;
+
        virtual void visit(Block &);
        virtual void visit(UnaryExpression &);
        virtual void visit(BinaryExpression &);
@@ -51,9 +51,10 @@ public:
        virtual void visit(FunctionCall &);
        virtual void visit(VariableDeclaration &);
        virtual void visit(Return &);
+       using TraversingVisitor::visit;
 };
 
-class ConstantConditionEliminator: public BlockModifier
+class ConstantConditionEliminator: private BlockModifier
 {
 private:
        unsigned scope_level;
@@ -65,16 +66,17 @@ public:
 
        void apply(Stage &s) { visit(s.content); }
 
-       using BlockModifier::visit;
+private:
        virtual void visit(Block &);
        virtual void visit(UnaryExpression &);
        virtual void visit(Assignment &);
        virtual void visit(VariableDeclaration &);
        virtual void visit(Conditional &);
        virtual void visit(Iteration &);
+       using BlockModifier::visit;
 };
 
-class UnusedVariableLocator: public TraversingVisitor
+class UnusedVariableLocator: private TraversingVisitor
 {
 private:
        struct VariableInfo
@@ -103,28 +105,25 @@ public:
 
        const std::set<Node *> &apply(Stage &);
 
-       using TraversingVisitor::visit;
+private:
        virtual void visit(VariableReference &);
        virtual void visit(MemberAccess &);
        virtual void visit(BinaryExpression &);
        virtual void visit(Assignment &);
-private:
        void record_assignment(VariableDeclaration &, Node &, bool);
        void clear_assignments(VariableInfo &, bool);
-public:
        virtual void visit(ExpressionStatement &);
        virtual void visit(StructDeclaration &);
        virtual void visit(VariableDeclaration &);
        virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &);
-private:
        void merge_down_variables();
-public:
        virtual void visit(Conditional &);
        virtual void visit(Iteration &);
+       using TraversingVisitor::visit;
 };
 
-class UnusedFunctionLocator: public TraversingVisitor
+class UnusedFunctionLocator: private TraversingVisitor
 {
 private:
        std::set<Node *> unused_nodes;
@@ -133,9 +132,10 @@ private:
 public:
        const std::set<Node *> &apply(Stage &s) { visit(s.content); return unused_nodes; }
 
-       using TraversingVisitor::visit;
+private:
        virtual void visit(FunctionCall &);
        virtual void visit(FunctionDeclaration &);
+       using TraversingVisitor::visit;
 };
 
 } // namespace SL