X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fprogramcompiler.h;h=2c8b33b6f905b726ed6eea6aa5a0230dee27f970;hb=e37d3b91500994df3de4fe47bd3d3e75d3104b46;hp=56bf1d538fc1be3069f1ed816547fbbc20638585;hpb=91d3eac06389c0bb0363f643790581403b5fca1b;p=libs%2Fgl.git diff --git a/source/programcompiler.h b/source/programcompiler.h index 56bf1d53..2c8b33b6 100644 --- a/source/programcompiler.h +++ b/source/programcompiler.h @@ -216,6 +216,7 @@ 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::Return &); }; @@ -225,11 +226,12 @@ private: typedef std::map ValueMap; const ValueMap *variable_values; + bool const_only; float result; bool result_valid; ExpressionEvaluator(); - ExpressionEvaluator(const ValueMap &); + ExpressionEvaluator(const ValueMap *, bool); using ProgramSyntax::NodeVisitor::visit; virtual void visit(ProgramSyntax::Literal &); @@ -242,6 +244,7 @@ private: struct ConstantConditionEliminator: BlockModifier { unsigned scope_level; + bool in_loop; ExpressionEvaluator::ValueMap variable_values; ConstantConditionEliminator();