primitiveGSMDecode(void) { sqInt dst; sqInt dstDelta; sqInt dstIndex; sqInt dstSize; sqInt frameCount; sqInt result; sqInt src; sqInt srcDelta; sqInt srcIndex; sqInt srcSize; sqInt state; dstDelta = 0; srcDelta = 0; dstIndex = stackIntegerValue(0); dst = stackValue(1); srcIndex = stackIntegerValue(2); src = stackValue(3); frameCount = stackIntegerValue(4); state = stackValue(5); success(isWords(dst)); success(isBytes(src)); success(isBytes(state)); if (failed()) { return null; } srcSize = slotSizeOf(src); dstSize = (slotSizeOf(dst)) * 2; gsmDecode(state + BaseHeaderSize, frameCount, src, srcIndex, srcSize, dst, dstIndex, dstSize, &srcDelta, &dstDelta); if (failed()) { return null; } result = makePointwithxValueyValue(srcDelta, dstDelta); if (failed()) { return null; } popthenPush(6, result); return 0; }
primitiveGSMDecode(void) { sqInt dst; sqInt dstDelta; sqInt dstIndex; sqInt dstSize; sqInt frameCount; sqInt result; sqInt src; sqInt srcDelta; sqInt srcIndex; sqInt srcSize; sqInt state; dstIndex = interpreterProxy->stackIntegerValue(0); dst = interpreterProxy->stackObjectValue(1); srcIndex = interpreterProxy->stackIntegerValue(2); src = interpreterProxy->stackObjectValue(3); frameCount = interpreterProxy->stackIntegerValue(4); state = interpreterProxy->stackObjectValue(5); interpreterProxy->success(interpreterProxy->isWords(dst)); interpreterProxy->success(interpreterProxy->isBytes(src)); interpreterProxy->success(interpreterProxy->isBytes(state)); if (interpreterProxy->failed()) { return null; } srcSize = interpreterProxy->slotSizeOf(src); dstSize = (interpreterProxy->slotSizeOf(dst)) * 2; gsmDecode(state + 4, frameCount, src, srcIndex, srcSize, dst, dstIndex, dstSize, &srcDelta, &dstDelta); if (interpreterProxy->failed()) { return null; } result = interpreterProxy->makePointwithxValueyValue(srcDelta, dstDelta); if (interpreterProxy->failed()) { return null; } interpreterProxy->pop(6); interpreterProxy->push(result); }