--- linuxsampler/trunk/src/scriptvm/tree.h 2019/08/28 11:12:04 3575 +++ linuxsampler/trunk/src/scriptvm/tree.h 2019/08/28 12:56:38 3576 @@ -678,11 +678,14 @@ }; typedef Ref SyncBlockRef; -class Neg FINAL : public IntExpr { - IntExprRef expr; +class Neg FINAL : virtual public IntExpr, virtual public RealExpr { + ScalarNumberExprRef expr; public: - Neg(IntExprRef expr) : expr(expr) { } - vmint evalInt() OVERRIDE { return (expr) ? -expr->evalInt() : 0; } + Neg(ScalarNumberExprRef expr) : expr(expr) { } + ExprType_t exprType() const OVERRIDE { return expr->exprType(); } + vmint evalInt() OVERRIDE { return (expr) ? -(expr->asInt()->evalInt()) : 0; } + vmfloat evalReal() OVERRIDE { return (expr) ? -(expr->asReal()->evalReal()) : vmfloat(0); } + String evalCastToStr() OVERRIDE; void dump(int level = 0) OVERRIDE; bool isConstExpr() const OVERRIDE { return expr->isConstExpr(); } bool isPolyphonic() const OVERRIDE { return expr->isPolyphonic(); }