]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programcompiler.h
Remove unused functions from the shader source
[libs/gl.git] / source / programcompiler.h
index f585ba92347ae52e580eec7c5d42ce993fc8c483..8681d3638a032cabd389879922fe7378c4a45a76 100644 (file)
@@ -108,6 +108,14 @@ private:
                virtual void visit(ProgramSyntax::InterfaceBlock &);
        };
 
+       struct FunctionResolver: Visitor
+       {
+               std::map<std::string, std::vector<ProgramSyntax::FunctionDeclaration *> > functions;
+
+               virtual void visit(ProgramSyntax::FunctionCall &);
+               virtual void visit(ProgramSyntax::FunctionDeclaration &);
+       };
+
        struct InterfaceGenerator: Visitor
        {
                std::string in_prefix;
@@ -207,6 +215,18 @@ private:
                virtual void visit(ProgramSyntax::Iteration &);
        };
 
+       struct UnusedFunctionLocator: Visitor
+       {
+               typedef std::set<ProgramSyntax::Node *> ResultType;
+
+               std::set<ProgramSyntax::Node *> unused_nodes;
+               std::set<ProgramSyntax::FunctionDeclaration *> used_definitions;
+
+               const ResultType &get_result() const { return unused_nodes; }
+               virtual void visit(ProgramSyntax::FunctionCall &);
+               virtual void visit(ProgramSyntax::FunctionDeclaration &);
+       };
+
        struct NodeRemover: Visitor
        {
                std::set<ProgramSyntax::Node *> to_remove;