]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/generate.h
Handle redeclaration of variables in VariableResolver
[libs/gl.git] / source / glsl / generate.h
index 0a940cea5599a8f1381aadf6b9051989ac607a29..402f07f480b239e39f76dd7334656337955b2ff3 100644 (file)
@@ -11,23 +11,6 @@ namespace Msp {
 namespace GL {
 namespace SL {
 
-/** Combines multiple declarations of the same identifier into one. */
-class DeclarationCombiner: private TraversingVisitor
-{
-private:
-       std::map<std::string, std::vector<FunctionDeclaration *> > functions;
-       std::map<std::string, VariableDeclaration *> variables;
-       std::set<Node *> nodes_to_remove;
-
-public:
-       void apply(Stage &);
-
-private:
-       virtual void visit(Block &);
-       virtual void visit(VariableDeclaration &);
-       virtual void visit(FunctionDeclaration &) { }
-};
-
 /** Manipulates specialization constants.  If values are specified, turns
 specialization constants into normal constants.  Without values assigns
 automatic constant_ids to specialization constants. */
@@ -99,6 +82,7 @@ private:
        bool record_target;
        bool r_self_referencing;
        Assignment::Target r_assignment_target;
+       std::set<Node *> nodes_to_remove;
 
 public:
        VariableResolver();
@@ -116,6 +100,7 @@ private:
        virtual void visit(Swizzle &);
        virtual void visit(BinaryExpression &);
        virtual void visit(Assignment &);
+       void merge_layouts(Layout &, const Layout &);
        virtual void visit(VariableDeclaration &);
        virtual void visit(InterfaceBlock &);
 };