primitiveFileSetPosition(void) { // FilePlugin>>#primitiveFileSetPosition SQFile *file; squeakFileOffsetType newPosition; sqInt objectPointer; if (!(isIntegerObject(stackValue(0)))) { if ((byteSizeOf(stackValue(0))) != (sizeof(squeakFileOffsetType))) { return primitiveFail(); } } newPosition = positive64BitValueOf(stackValue(0)); /* begin fileValueOf: */ objectPointer = stackValue(1); if (!((isBytes(objectPointer)) && ((byteSizeOf(objectPointer)) == (sizeof(SQFile))))) { primitiveFail(); file = null; goto l1; } file = firstIndexableField(objectPointer); l1: /* end fileValueOf: */; if (!(failed())) { sqFileSetPosition(file, newPosition); } if (!(failed())) { pop(2); } }
EXPORT(sqInt) primitiveFileSetPosition(void) { sqInt sz; squeakFileOffsetType newPosition; SQFile * file; sqInt objectPointer; if (!(((interpreterProxy->stackValue(0)) & 1))) { sz = sizeof(squeakFileOffsetType); if ((interpreterProxy->byteSizeOf(interpreterProxy->stackValue(0))) > sz) { return interpreterProxy->primitiveFail(); } } newPosition = interpreterProxy->positive64BitValueOf(interpreterProxy->stackValue(0)); /* begin fileValueOf: */ objectPointer = interpreterProxy->stackValue(1); if (!((interpreterProxy->isBytes(objectPointer)) && ((interpreterProxy->byteSizeOf(objectPointer)) == (fileRecordSize())))) { interpreterProxy->primitiveFail(); file = null; goto l1; } file = interpreterProxy->firstIndexableField(objectPointer); l1: /* end fileValueOf: */; if (!(interpreterProxy->failed())) { sqFileSetPosition(file, newPosition); } if (!(interpreterProxy->failed())) { interpreterProxy->pop(2); } }