--- linuxsampler/trunk/src/scriptvm/common.cpp 2019/08/30 12:39:18 3583 +++ linuxsampler/trunk/src/scriptvm/common.cpp 2019/08/30 13:33:32 3584 @@ -134,20 +134,46 @@ return vmfloat( asInt()->evalInt() ); } + vmint VMNumberExpr::evalCastInt(MetricPrefix_t prefix) { + vmfloat f = evalCastReal(); + vmfloat factor = unitFactor() / _unitFactor(prefix); + return vmint(f * factor); + } + + vmint VMNumberExpr::evalCastInt(MetricPrefix_t prefix1, MetricPrefix_t prefix2) { + vmfloat f = evalCastReal(); + vmfloat factor = unitFactor() / + ( _unitFactor(prefix1) * _unitFactor(prefix2) ); + return vmint(f * factor); + } + + vmfloat VMNumberExpr::evalCastReal(MetricPrefix_t prefix) { + vmfloat f = evalCastReal(); + vmfloat factor = unitFactor() / _unitFactor(prefix); + return f * factor; + } + + vmfloat VMNumberExpr::evalCastReal(MetricPrefix_t prefix1, MetricPrefix_t prefix2) { + vmfloat f = evalCastReal(); + vmfloat factor = unitFactor() / + ( _unitFactor(prefix1) * _unitFactor(prefix2) ); + return f * factor; + } + /////////////////////////////////////////////////////////////////////// // class 'VMIntExpr' vmint VMIntExpr::evalInt(MetricPrefix_t prefix) { vmfloat f = (vmfloat) evalInt(); vmfloat factor = unitFactor() / _unitFactor(prefix); - return (vmint) f * factor; + return vmint(f * factor); } vmint VMIntExpr::evalInt(MetricPrefix_t prefix1, MetricPrefix_t prefix2) { vmfloat f = (vmfloat) evalInt(); vmfloat factor = unitFactor() / ( _unitFactor(prefix1) * _unitFactor(prefix2) ); - return (vmint) f * factor; + return vmint(f * factor); } ///////////////////////////////////////////////////////////////////////