X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramcompiler.h;h=76e9eef352f83f67a46c6b8a620d0411c0bf0440;hb=5089933d82e69c4485843781aa4c762fc0c49be7;hp=7e8d3373a53e4ffcf028a218d99e420d1a9cd5a7;hpb=e9d5d1945f110d5307036af0d4b3f0c3ebfe3d2a;p=libs%2Fgl.git diff --git a/source/programcompiler.h b/source/programcompiler.h index 7e8d3373..76e9eef3 100644 --- a/source/programcompiler.h +++ b/source/programcompiler.h @@ -216,7 +216,9 @@ private: virtual void visit(ProgramSyntax::Block &); virtual void visit(ProgramSyntax::UnaryExpression &); virtual void visit(ProgramSyntax::BinaryExpression &); + virtual void visit(ProgramSyntax::MemberAccess &); virtual void visit(ProgramSyntax::FunctionCall &); + virtual void visit(ProgramSyntax::VariableDeclaration &); virtual void visit(ProgramSyntax::Return &); }; @@ -242,12 +244,14 @@ private: struct ConstantConditionEliminator: BlockModifier { unsigned scope_level; + bool record_only; ExpressionEvaluator::ValueMap variable_values; ConstantConditionEliminator(); using Visitor::visit; virtual void visit(ProgramSyntax::Block &); + virtual void visit(ProgramSyntax::UnaryExpression &); virtual void visit(ProgramSyntax::Assignment &); virtual void visit(ProgramSyntax::VariableDeclaration &); virtual void visit(ProgramSyntax::Conditional &); @@ -275,6 +279,7 @@ private: std::vector variables; ProgramSyntax::Assignment *assignment; bool assignment_target; + bool assign_to_subscript; bool global_scope; UnusedVariableLocator(); @@ -321,6 +326,7 @@ private: using Visitor::visit; virtual void visit(ProgramSyntax::Block &); virtual void visit(ProgramSyntax::VariableDeclaration &); + virtual void visit(ProgramSyntax::Iteration &); }; struct PrecisionRemover: BlockModifier @@ -354,6 +360,7 @@ private: LegacyConverter(const Version &); bool check_version(const Version &) const; + bool check_extension(const Extension &) const; using Visitor::visit; bool supports_unified_interface_syntax() const; virtual void visit(ProgramSyntax::VariableReference &); @@ -361,6 +368,8 @@ private: bool supports_unified_sampling_functions() const; virtual void visit(ProgramSyntax::FunctionCall &); bool supports_interface_layouts() const; + bool supports_centroid_sampling() const; + bool supports_sample_sampling() const; virtual void visit(ProgramSyntax::VariableDeclaration &); bool supports_interface_blocks(const std::string &) const; virtual void visit(ProgramSyntax::InterfaceBlock &);