--- linuxsampler/trunk/src/scriptvm/tree.h 2019/08/27 21:36:53 3573 +++ linuxsampler/trunk/src/scriptvm/tree.h 2019/08/28 08:26:54 3574 @@ -116,7 +116,7 @@ }; typedef Ref StringExprRef; -class IntLiteral : public IntExpr { +class IntLiteral FINAL : public IntExpr { bool finalVal; public: vmint value; @@ -131,7 +131,7 @@ }; typedef Ref IntLiteralRef; -class RealLiteral : public RealExpr { +class RealLiteral FINAL : public RealExpr { vmfloat value; bool finalVal; public: @@ -146,7 +146,7 @@ }; typedef Ref RealLiteralRef; -class StringLiteral : virtual public StringExpr { +class StringLiteral FINAL : public StringExpr { public: String value; StringLiteral(const String& value) : value(value) { } @@ -157,7 +157,7 @@ }; typedef Ref StringLiteralRef; -class Args : virtual public VMFnArgs, virtual public Node { +class Args FINAL : virtual public VMFnArgs, virtual public Node { public: std::vector args; void add(ExpressionRef arg) { args.push_back(arg); } @@ -220,7 +220,7 @@ }; typedef Ref RealVariableRef; -class ConstIntVariable : public IntVariable { +class ConstIntVariable FINAL : public IntVariable { public: vmint value; @@ -231,7 +231,7 @@ }; typedef Ref ConstIntVariableRef; -class ConstRealVariable : public RealVariable { +class ConstRealVariable FINAL : public RealVariable { public: vmfloat value; @@ -242,7 +242,7 @@ }; typedef Ref ConstRealVariableRef; -class BuiltInIntVariable : public IntVariable { +class BuiltInIntVariable FINAL : public IntVariable { String name; VMIntPtr* ptr; public: @@ -254,14 +254,14 @@ }; typedef Ref BuiltInIntVariableRef; -class PolyphonicIntVariable : public IntVariable { +class PolyphonicIntVariable FINAL : public IntVariable { public: PolyphonicIntVariable(ParserContext* ctx); void dump(int level = 0) OVERRIDE; }; typedef Ref PolyphonicIntVariableRef; -class PolyphonicRealVariable : public RealVariable { +class PolyphonicRealVariable FINAL : public RealVariable { public: PolyphonicRealVariable(ParserContext* ctx); void dump(int level = 0) OVERRIDE; @@ -286,7 +286,7 @@ }; typedef Ref IntArrayVariableRef; -class RealArrayVariable : public Variable, virtual public RealArrayExpr { +class RealArrayVariable FINAL : public Variable, virtual public RealArrayExpr { ArrayList values; public: RealArrayVariable(ParserContext* ctx, vmint size); @@ -304,7 +304,7 @@ }; typedef Ref RealArrayVariableRef; -class BuiltInIntArrayVariable : public IntArrayVariable { +class BuiltInIntArrayVariable FINAL : public IntArrayVariable { String name; VMInt8Array* array; public: @@ -317,7 +317,7 @@ }; typedef Ref BuiltInIntArrayVariableRef; -class IntArrayElement : public IntVariable { +class IntArrayElement FINAL : public IntVariable { IntArrayExprRef array; IntExprRef index; public: @@ -328,7 +328,7 @@ }; typedef Ref IntArrayElementRef; -class RealArrayElement : public RealVariable { +class RealArrayElement FINAL : public RealVariable { RealArrayExprRef array; IntExprRef index; public: @@ -351,7 +351,7 @@ }; typedef Ref StringVariableRef; -class ConstStringVariable : public StringVariable { +class ConstStringVariable FINAL : public StringVariable { public: String value; @@ -396,7 +396,7 @@ }; typedef Ref VaritypeScalarBinaryOpRef; -class Add : public VaritypeScalarBinaryOp { +class Add FINAL : public VaritypeScalarBinaryOp { public: Add(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : VaritypeScalarBinaryOp(lhs, rhs) { } vmint evalInt() OVERRIDE; @@ -405,7 +405,7 @@ }; typedef Ref AddRef; -class Sub : public VaritypeScalarBinaryOp { +class Sub FINAL : public VaritypeScalarBinaryOp { public: Sub(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : VaritypeScalarBinaryOp(lhs, rhs) { } vmint evalInt() OVERRIDE; @@ -414,7 +414,7 @@ }; typedef Ref SubRef; -class Mul : public VaritypeScalarBinaryOp { +class Mul FINAL : public VaritypeScalarBinaryOp { public: Mul(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : VaritypeScalarBinaryOp(lhs, rhs) { } vmint evalInt() OVERRIDE; @@ -425,7 +425,7 @@ }; typedef Ref MulRef; -class Div : public VaritypeScalarBinaryOp { +class Div FINAL : public VaritypeScalarBinaryOp { public: Div(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : VaritypeScalarBinaryOp(lhs, rhs) { } vmint evalInt() OVERRIDE; @@ -436,7 +436,7 @@ }; typedef Ref DivRef; -class Mod : public IntBinaryOp { +class Mod FINAL : public IntBinaryOp { public: Mod(IntExprRef lhs, IntExprRef rhs) : IntBinaryOp(lhs, rhs) { } vmint evalInt() OVERRIDE; @@ -452,7 +452,7 @@ // Just used by parser to avoid "not a statement" parser warning, will be // filtered out by parser. So it will not be part of the VM tree after parsing. -class NoOperation : public Statement { +class NoOperation FINAL : public Statement { public: NoOperation() : Statement() {} StmtType_t statementType() const OVERRIDE { return STMT_NOOP; } @@ -488,7 +488,7 @@ virtual Statements* branch(vmuint i) const = 0; }; -class DynamicVariableCall : public Variable, virtual public IntExpr, virtual public StringExpr, virtual public IntArrayExpr { +class DynamicVariableCall FINAL : public Variable, virtual public IntExpr, virtual public StringExpr, virtual public IntArrayExpr { VMDynVar* dynVar; String varName; public: @@ -538,7 +538,7 @@ }; typedef Ref FunctionCallRef; -class NoFunctionCall : public FunctionCall { +class NoFunctionCall FINAL : public FunctionCall { public: NoFunctionCall() : FunctionCall("nothing", new Args, NULL) {} StmtType_t statementType() const OVERRIDE { return STMT_NOOP; } @@ -557,7 +557,7 @@ }; typedef Ref EventHandlerRef; -class OnNote : public EventHandler { +class OnNote FINAL : public EventHandler { public: OnNote(StatementsRef statements) : EventHandler(statements) {} VMEventHandlerType_t eventHandlerType() const OVERRIDE { return VM_EVENT_HANDLER_NOTE; } @@ -565,7 +565,7 @@ }; typedef Ref OnNoteRef; -class OnInit : public EventHandler { +class OnInit FINAL : public EventHandler { public: OnInit(StatementsRef statements) : EventHandler(statements) {} VMEventHandlerType_t eventHandlerType() const OVERRIDE { return VM_EVENT_HANDLER_INIT; } @@ -573,7 +573,7 @@ }; typedef Ref OnInitRef; -class OnRelease : public EventHandler { +class OnRelease FINAL : public EventHandler { public: OnRelease(StatementsRef statements) : EventHandler(statements) {} VMEventHandlerType_t eventHandlerType() const OVERRIDE { return VM_EVENT_HANDLER_RELEASE; } @@ -581,7 +581,7 @@ }; typedef Ref OnReleaseRef; -class OnController : public EventHandler { +class OnController FINAL : public EventHandler { public: OnController(StatementsRef statements) : EventHandler(statements) {} VMEventHandlerType_t eventHandlerType() const OVERRIDE { return VM_EVENT_HANDLER_CONTROLLER; } @@ -589,7 +589,7 @@ }; typedef Ref OnControllerRef; -class EventHandlers : virtual public Node { +class EventHandlers FINAL : virtual public Node { std::vector args; public: EventHandlers(); @@ -603,7 +603,7 @@ }; typedef Ref EventHandlersRef; -class Assignment : public LeafStatement { +class Assignment FINAL : public LeafStatement { protected: VariableRef variable; ExpressionRef value; @@ -615,7 +615,7 @@ }; typedef Ref AssignmentRef; -class If : public BranchStatement { +class If FINAL : public BranchStatement { IntExprRef condition; StatementsRef ifStatements; StatementsRef elseStatements; @@ -631,15 +631,14 @@ }; typedef Ref IfRef; -struct CaseBranch { +struct CaseBranch FINAL { IntExprRef from; IntExprRef to; StatementsRef statements; }; - typedef std::vector CaseBranches; -class SelectCase : public BranchStatement { +class SelectCase FINAL : public BranchStatement { IntExprRef select; CaseBranches branches; public: @@ -655,7 +654,7 @@ }; typedef Ref SelectCaseRef; -class While : public Statement { +class While FINAL : public Statement { IntExprRef m_condition; StatementsRef m_statements; public: @@ -668,7 +667,7 @@ bool isPolyphonic() const OVERRIDE { return m_condition->isPolyphonic() || m_statements->isPolyphonic(); } }; -class SyncBlock : public Statement { +class SyncBlock FINAL : public Statement { StatementsRef m_statements; public: SyncBlock(StatementsRef statements) : m_statements(statements) {} @@ -679,7 +678,7 @@ }; typedef Ref SyncBlockRef; -class Neg : public IntExpr { +class Neg FINAL : public IntExpr { IntExprRef expr; public: Neg(IntExprRef expr) : expr(expr) { } @@ -693,7 +692,7 @@ }; typedef Ref NegRef; -class ConcatString : public StringExpr { +class ConcatString FINAL : public StringExpr { ExpressionRef lhs; ExpressionRef rhs; public: @@ -705,7 +704,7 @@ }; typedef Ref ConcatStringRef; -class Relation : public IntExpr { +class Relation FINAL : public IntExpr { public: enum Type { LESS_THAN, @@ -731,7 +730,7 @@ }; typedef Ref RelationRef; -class Or : public IntBinaryOp { +class Or FINAL : public IntBinaryOp { public: Or(IntExprRef lhs, IntExprRef rhs) : IntBinaryOp(lhs,rhs) {} vmint evalInt() OVERRIDE; @@ -739,7 +738,7 @@ }; typedef Ref OrRef; -class BitwiseOr : public IntBinaryOp { +class BitwiseOr FINAL : public IntBinaryOp { public: BitwiseOr(IntExprRef lhs, IntExprRef rhs) : IntBinaryOp(lhs,rhs) {} vmint evalInt() OVERRIDE; @@ -749,7 +748,7 @@ }; typedef Ref BitwiseOrRef; -class And : public IntBinaryOp { +class And FINAL : public IntBinaryOp { public: And(IntExprRef lhs, IntExprRef rhs) : IntBinaryOp(lhs,rhs) {} vmint evalInt() OVERRIDE; @@ -757,7 +756,7 @@ }; typedef Ref AndRef; -class BitwiseAnd : public IntBinaryOp { +class BitwiseAnd FINAL : public IntBinaryOp { public: BitwiseAnd(IntExprRef lhs, IntExprRef rhs) : IntBinaryOp(lhs,rhs) {} vmint evalInt() OVERRIDE; @@ -767,7 +766,7 @@ }; typedef Ref BitwiseAndRef; -class Not : virtual public IntExpr { +class Not FINAL : virtual public IntExpr { IntExprRef expr; public: Not(IntExprRef expr) : expr(expr) {} @@ -781,7 +780,7 @@ }; typedef Ref NotRef; -class BitwiseNot : virtual public IntExpr { +class BitwiseNot FINAL : virtual public IntExpr { IntExprRef expr; public: BitwiseNot(IntExprRef expr) : expr(expr) {} @@ -795,7 +794,7 @@ }; typedef Ref BitwiseNotRef; -class Final : virtual public IntExpr, virtual public RealExpr { +class Final FINAL : virtual public IntExpr, virtual public RealExpr { ScalarNumberExprRef expr; public: Final(ScalarNumberExprRef expr) : expr(expr) {} @@ -812,7 +811,7 @@ }; typedef Ref FinalRef; -class ParserContext : public VMParserContext { +class ParserContext FINAL : public VMParserContext { public: struct Error { String txt; @@ -890,7 +889,7 @@ void registerBuiltInDynVariables(const std::map& vars); }; -class ExecContext : public VMExecContext { +class ExecContext FINAL : public VMExecContext { public: struct StackFrame { Statement* statement;