X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fresolve.h;h=92a7c336de71fbbb8a217dd7ece8dd29040c4ea2;hb=fea5f2abec9b8e971d8467804f379cfcd81e9ff7;hp=856117272f892e9c5e60cd0a6f0ca53e34f6e567;hpb=17074650100dd51362f6075eca81e18748808a63;p=libs%2Fgl.git diff --git a/source/glsl/resolve.h b/source/glsl/resolve.h index 85611727..92a7c336 100644 --- a/source/glsl/resolve.h +++ b/source/glsl/resolve.h @@ -30,7 +30,7 @@ class TypeResolver: private TraversingVisitor private: Stage *stage = 0; std::map alias_map; - std::map array_types; + std::map, TypeDeclaration *> array_types; NodeList::iterator type_insert_point; InterfaceBlock *iface_block = 0; bool r_any_resolved = false; @@ -78,6 +78,7 @@ private: virtual void visit(BinaryExpression &); virtual void visit(Assignment &); void merge_layouts(Layout &, const Layout &); + void redeclare_builtin(VariableDeclaration &, VariableDeclaration &); virtual void visit(VariableDeclaration &); virtual void visit(InterfaceBlock &); }; @@ -101,6 +102,7 @@ private: }; Stage *stage = 0; + const FunctionDeclaration *current_function = 0; std::vector basic_types; NodeList::iterator insert_point; bool r_any_resolved = false; @@ -132,6 +134,8 @@ private: virtual void visit(FunctionCall &); virtual void visit(BasicTypeDeclaration &); virtual void visit(VariableDeclaration &); + virtual void visit(FunctionDeclaration &); + virtual void visit(Return &); }; /** Resolves function declarations and calls. */