]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/resolve.h
Unify handling of variables and interface blocks in the GLSL compiler
[libs/gl.git] / source / glsl / resolve.h
index 92a7c336de71fbbb8a217dd7ece8dd29040c4ea2..36af54578da987b53fafcdabaffc3d6130b57a55 100644 (file)
@@ -32,7 +32,8 @@ private:
        std::map<TypeDeclaration *, TypeDeclaration *> alias_map;
        std::map<std::pair<TypeDeclaration *, bool>, TypeDeclaration *> array_types;
        NodeList<Statement>::iterator type_insert_point;
-       InterfaceBlock *iface_block = 0;
+       NodeList<Statement>::iterator block_member_type_ins_pt;
+       VariableDeclaration *iface_block = 0;
        bool r_any_resolved = false;
 
 public:
@@ -46,12 +47,10 @@ private:
        virtual void visit(ImageTypeDeclaration &);
        virtual void visit(StructDeclaration &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
        virtual void visit(FunctionDeclaration &);
 };
 
-/** Resolves variable references.  Variable references which match the name
-of an interface block are turned into interface block references. */
+/** Resolves variable references. */
 class VariableResolver: private TraversingVisitor
 {
 private:
@@ -72,7 +71,6 @@ private:
        virtual void visit(RefPtr<Expression> &);
        void check_assignment_target(Statement *);
        virtual void visit(VariableReference &);
-       virtual void visit(InterfaceBlockReference &);
        virtual void visit(MemberAccess &);
        virtual void visit(Swizzle &);
        virtual void visit(BinaryExpression &);
@@ -80,7 +78,6 @@ private:
        void merge_layouts(Layout &, const Layout &);
        void redeclare_builtin(VariableDeclaration &, VariableDeclaration &);
        virtual void visit(VariableDeclaration &);
-       virtual void visit(InterfaceBlock &);
 };
 
 /** Resolves types and lvalueness of expressions. */
@@ -122,7 +119,6 @@ private:
        virtual void visit(Block &);
        virtual void visit(Literal &);
        virtual void visit(VariableReference &);
-       virtual void visit(InterfaceBlockReference &);
        virtual void visit(MemberAccess &);
        virtual void visit(Swizzle &);
        virtual void visit(UnaryExpression &);