EXPORT(sqInt) ioAddClipboardData(void) { sqInt clipboardAddress; sqInt dataLength; sqInt formatLength; sqInt clipboard; char *data; char *aFormat; clipboard = interpreterProxy->stackValue(2); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(1))); data = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); aFormat = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } clipboardAddress = interpreterProxy->positive32BitValueOf(clipboard); dataLength = interpreterProxy->slotSizeOf((oopForPointer( data ) - 4)); formatLength = interpreterProxy->slotSizeOf((oopForPointer( aFormat ) - 4)); sqPasteboardPutItemFlavordatalengthformatTypeformatLength(clipboardAddress, data, dataLength, aFormat, formatLength); if (interpreterProxy->failed()) { return null; } interpreterProxy->pop(3); return null; }
EXPORT(sqInt) primitiveSoundRecordSamples(void) { sqInt bufLen; sqInt samplesRecorded; sqInt bufSizeInBytes; sqInt byteOffset; char*bufPtr; usqInt *buf; sqInt startWordIndex; sqInt _return_value; interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startWordIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } if (!(interpreterProxy->failed())) { bufSizeInBytes = (interpreterProxy->slotSizeOf((oopForPointer( buf ) - BASE_HEADER_SIZE))) * 4; interpreterProxy->success((startWordIndex >= 1) && (((startWordIndex - 1) * 2) < bufSizeInBytes)); } if (!(interpreterProxy->failed())) { byteOffset = (startWordIndex - 1) * 2; bufPtr = (((char*) buf)) + byteOffset; bufLen = bufSizeInBytes - byteOffset; samplesRecorded = snd_RecordSamplesIntoAtLength(bufPtr, 0, bufLen); } _return_value = interpreterProxy->positive32BitIntegerFor(samplesRecorded); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
EXPORT(sqInt) primitiveSoundInsertSamples(void) { sqInt framesPlayed; sqInt frameCount; usqInt *buf; sqInt leadTime; sqInt _return_value; frameCount = interpreterProxy->stackIntegerValue(2); interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); leadTime = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success(frameCount <= (interpreterProxy->slotSizeOf((oopForPointer( buf ) - BASE_HEADER_SIZE)))); if (!(interpreterProxy->failed())) { framesPlayed = snd_InsertSamplesFromLeadTime(frameCount, (void *)buf, leadTime); interpreterProxy->success(framesPlayed >= 0); } _return_value = interpreterProxy->positive32BitIntegerFor(framesPlayed); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(4, _return_value); return null; }
EXPORT(sqInt) primitiveSoundRecordSamples(void) { sqInt bufSizeInBytes; sqInt samplesRecorded; usqInt *buf; sqInt startWordIndex; sqInt _return_value; interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startWordIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } if (!(interpreterProxy->failed())) { bufSizeInBytes = (interpreterProxy->slotSizeOf((oopForPointer( buf ) - 4))) * 4; interpreterProxy->success((startWordIndex >= 1) && (((startWordIndex - 1) * 2) < bufSizeInBytes)); } if (!(interpreterProxy->failed())) { samplesRecorded = snd_RecordSamplesIntoAtLength((void *)buf, startWordIndex - 1, bufSizeInBytes); } _return_value = interpreterProxy->positive32BitIntegerFor(samplesRecorded); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
EXPORT(sqInt) primitiveGetMacintoshFileTypeAndCreatorFrom(void) { sqInt i; sqInt keyLength; char * ptr; sqInt oop; char creator[8]; char *aFileName; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); aFileName = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } keyLength = interpreterProxy->byteSizeOf((oopForPointer( aFileName ) - 4)); sqInternetGetMacintoshFileTypeAndCreatorFromkeySizeinto(aFileName, keyLength, creator); oop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), 8); ptr = interpreterProxy->firstIndexableField(oop); for (i = 0; i <= 7; i += 1) { ptr[i] = (creator[i]); } if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, oop); return null; }
EXPORT(sqInt) primitiveGetStringKeyedBy(void) { char * ptr; sqInt oop; sqInt size; sqInt i; sqInt keyLength; char aString[1025]; char *aKey; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); aKey = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } keyLength = interpreterProxy->byteSizeOf((oopForPointer( aKey ) - 4)); size = sqInternetConfigurationGetStringKeyedBykeySizeinto(aKey, keyLength, aString); oop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), size); ptr = interpreterProxy->firstIndexableField(oop); for (i = 0; i <= (size - 1); i += 1) { ptr[i] = (aString[i]); } if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, oop); return null; }
EXPORT(sqInt) primitiveAsyncFileOpen(void) { AsyncFile * f; sqInt fOop; sqInt okToOpen; sqInt fileNameSize; char *fileName; sqInt writeFlag; sqInt semaIndex; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(2))); fileName = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(2)))); writeFlag = interpreterProxy->booleanValueOf(interpreterProxy->stackValue(1)); semaIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } /* If the security plugin can be loaded, use it to check for permission. If not, assume it's ok */ fileNameSize = interpreterProxy->slotSizeOf(oopForPointer(fileName) - 4); if (sCOAFfn != 0) { okToOpen = ((sqInt (*) (char *, sqInt, sqInt)) sCOAFfn)(fileName, fileNameSize, writeFlag); if (!(okToOpen)) { interpreterProxy->primitiveFail(); return null; } } fOop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(), sizeof(AsyncFile)); f = asyncFileValueOf(fOop); if (!(interpreterProxy->failed())) { asyncFileOpen(f, (int)fileName, fileNameSize, writeFlag, semaIndex); } if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(4, fOop); return null; }
EXPORT(sqInt) ioReadClipboardData(void) { sqInt formatLength; sqInt clipboardAddress; sqInt clipboard; char *format; sqInt _return_value; clipboard = interpreterProxy->stackValue(1); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); format = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } clipboardAddress = interpreterProxy->positive32BitValueOf(clipboard); formatLength = interpreterProxy->slotSizeOf((oopForPointer( format ) - 4)); _return_value = sqPasteboardCopyItemFlavorDataformatformatLength(clipboardAddress, format, formatLength); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
EXPORT(sqInt) primitiveMPEG3CheckSig(void) { sqInt sz; char storage[1024] ; sqInt result; char *path; sqInt _return_value; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); path = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } sz = interpreterProxy->byteSizeOf((oopForPointer( path ) - 4)); interpreterProxy->ioFilenamefromStringofLengthresolveAliases(storage, path, sz, 1); result = mpeg3_check_sig(storage); _return_value = (result? interpreterProxy->trueObject(): interpreterProxy->falseObject()); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; }
EXPORT(sqInt) primitiveMIDIRead(void) { sqInt arrayLength; sqInt bytesRead; sqInt portNum; char *array; sqInt _return_value; portNum = interpreterProxy->stackIntegerValue(1); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); array = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } arrayLength = interpreterProxy->byteSizeOf((oopForPointer( array ) - 4)); bytesRead = sqMIDIPortReadInto(portNum, arrayLength, ((sqInt) array )); _return_value = interpreterProxy->integerObjectOf(bytesRead); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
EXPORT(sqInt) primitiveMPEG3Open(void) { sqInt mpeg3Oop; mpeg3_t ** index; sqInt sz; char storage[1024]; char *path; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); path = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } sz = interpreterProxy->byteSizeOf((oopForPointer( path ) - 4)); interpreterProxy->ioFilenamefromStringofLengthresolveAliases(storage, path, sz, 1); mpeg3Oop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(), 4); index = ((mpeg3_t **) (interpreterProxy->firstIndexableField(mpeg3Oop))); *index = mpeg3_open(storage,0); makeFileEntry(*index); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, mpeg3Oop); return null; }
EXPORT(sqInt) primitiveMIDIWrite(void) { sqInt arrayLength; sqInt bytesWritten; sqInt portNum; char *array; sqInt time; sqInt _return_value; portNum = interpreterProxy->stackIntegerValue(2); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(1))); array = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); time = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } arrayLength = interpreterProxy->byteSizeOf((oopForPointer( array ) - 4)); bytesWritten = sqMIDIPortWriteFromAt(portNum, arrayLength, ((sqInt) array ), time); _return_value = interpreterProxy->integerObjectOf(bytesWritten); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(4, _return_value); return null; }
EXPORT(sqInt) primitiveSoundPlaySamples(void) { sqInt framesPlayed; sqInt frameCount; usqInt *buf; sqInt startIndex; sqInt _return_value; frameCount = interpreterProxy->stackIntegerValue(2); interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success((startIndex >= 1) && (((startIndex + frameCount) - 1) <= (interpreterProxy->slotSizeOf((oopForPointer( buf ) - BASE_HEADER_SIZE))))); if (!(interpreterProxy->failed())) { framesPlayed = snd_PlaySamplesFromAtLength(frameCount, (void *)buf, startIndex - 1); interpreterProxy->success(framesPlayed >= 0); } _return_value = interpreterProxy->positive32BitIntegerFor(framesPlayed); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(4, _return_value); return null; }
EXPORT(sqInt) primitiveSerialPortWriteByName(void) { sqInt bytesWritten; char * cString; char *deviceName; char *array; sqInt startIndex; sqInt count; sqInt _return_value; char *p; sqInt len; sqInt terminatedString; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(3))); deviceName = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(3)))); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(2))); array = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(2)))); startIndex = interpreterProxy->stackIntegerValue(1); count = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success((startIndex >= 1) && (((startIndex + count) - 1) <= (interpreterProxy->byteSizeOf((oopForPointer( array ) - BASE_HEADER_SIZE))))); if (!(interpreterProxy->failed())) { /* begin allocateTerminatedString: */ len = interpreterProxy->sizeOfSTArrayFromCPrimitive(deviceName); terminatedString = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), len + 1); p = interpreterProxy->arrayValueOf(terminatedString); p[len] = 0; while (len >= 0) { len -= 1; p[len] = (deviceName[len]); } cString = p; bytesWritten = serialPortWriteFromByName(cString, count, (array + startIndex) - 1); } _return_value = interpreterProxy->integerObjectOf(bytesWritten); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(5, _return_value); return null; }
EXPORT(sqInt) primitiveSerialPortWrite(void) { sqInt bytesWritten; sqInt portNum; char *array; sqInt startIndex; sqInt count; sqInt _return_value; portNum = interpreterProxy->stackIntegerValue(3); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(2))); array = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(2)))); startIndex = interpreterProxy->stackIntegerValue(1); count = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success((startIndex >= 1) && (((startIndex + count) - 1) <= (interpreterProxy->byteSizeOf((oopForPointer( array ) - BASE_HEADER_SIZE))))); if (!(interpreterProxy->failed())) { bytesWritten = serialPortWriteFrom(portNum, count, (array + startIndex) - 1); } _return_value = interpreterProxy->integerObjectOf(bytesWritten); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(5, _return_value); return null; }
sqInt sqShrinkMemoryBy(sqInt oldLimit, sqInt delta) { return oopForPointer(uxShrinkMemoryBy(pointerForOop(oldLimit), delta)); }