--- linuxsampler/trunk/src/scriptvm/tree.cpp 2017/06/22 10:45:38 3285 +++ linuxsampler/trunk/src/scriptvm/tree.cpp 2017/06/27 22:19:19 3293 @@ -35,7 +35,7 @@ return ToString(evalInt()); } -/*String IntArrayExpr::evalCastToStr() { +String IntArrayExpr::evalCastToStr() { String s = "{"; for (int i = 0; i < arraySize(); ++i) { int val = evalIntElement(i); @@ -44,7 +44,7 @@ } s += "}"; return s; -}*/ +} int IntLiteral::evalInt() { return value; @@ -521,7 +521,7 @@ printf("Built-In Int Array Variable '%s'\n", name.c_str()); } -IntArrayElement::IntArrayElement(IntArrayVariableRef array, IntExprRef arrayIndex) +IntArrayElement::IntArrayElement(IntArrayExprRef array, IntExprRef arrayIndex) : IntVariable(NULL, false, false, 0), array(array), index(arrayIndex) { } @@ -1067,4 +1067,16 @@ } } +void ExecContext::forkTo(VMExecContext* ectx) const { + ExecContext* child = dynamic_cast(ectx); + + child->polyphonicIntMemory.copyFlatFrom(polyphonicIntMemory); + child->status = VM_EXEC_SUSPENDED; + child->flags = STMT_SUCCESS; + child->stack.copyFlatFrom(stack); + child->stackFrame = stackFrame; + child->suspendMicroseconds = 0; + child->instructionsCount = 0; +} + } // namespace LinuxSampler