Marcel Taeumel uploaded a new version of FFI-Kernel to project FFI: http://source.squeak.org/FFI/FFI-Kernel-mt.175.mcz
==================== Summary ====================
Name: FFI-Kernel-mt.175 Author: mt Time: 27 May 2021, 10:48:18.236247 am UUID: 95c5280e-eb69-9748-8139-7835cd7e2f06 Ancestors: FFI-Kernel-mt.174
Complements Monticello-mt.748. Also removes some variable shadows.
=============== Diff against FFI-Kernel-mt.174 ===============
Item was changed: ----- Method: ExternalData>>from: (in category 'accessing') ----- from: firstIndex "Move the start of this array. Size not needed."
+ | byteOffset numElements byteSize | + byteOffset := ((firstIndex-1) * self contentType byteSize)+1. - | byteOffset numElements byteSize contentType | - contentType := self contentType. - byteOffset := ((firstIndex-1) * contentType byteSize)+1. numElements := (self size ifNotNil: [:sz | sz - firstIndex + 1 max: 0]). byteSize := numElements + ifNil: [self contentType byteSize] + ifNotNil: [numElements * self contentType byteSize]. - ifNil: [contentType byteSize] - ifNotNil: [numElements * contentType byteSize].
^ ExternalData fromHandle: (handle structAt: byteOffset length: (byteSize ifNil: [1])) + type: self contentType - type: contentType size: numElements!
Item was changed: ----- Method: ExternalData>>from:to: (in category 'accessing') ----- from: firstIndex to: lastIndex "Only copy data if already in object memory, that is, as byte array. Only check size if configured."
+ | byteOffset numElements byteSize | - | byteOffset numElements byteSize contentType | ExtraSizeChecks == true ifTrue: [ self sizeCheck: firstIndex. self sizeCheck: lastIndex].
+ byteOffset := ((firstIndex-1) * self contentType byteSize)+1. - contentType := self contentType. - byteOffset := ((firstIndex-1) * contentType byteSize)+1. numElements := lastIndex - firstIndex + 1 max: 0. + byteSize := numElements * self contentType byteSize. - byteSize := numElements * contentType byteSize.
^ ExternalData fromHandle: (handle structAt: byteOffset length: byteSize) + type: self contentType - type: contentType size: numElements!
Item was added: + ----- Method: ExternalStructure class>>compileFieldsSafely (in category 'field definition') ----- + compileFieldsSafely + + [self compileFields] + ifError: [:msg | Transcript showln: '[FFI] Field compilation failed: ', msg].!
Item was changed: ----- Method: ExternalStructure class>>doneCompiling (in category 'class management') ----- doneCompiling "Base class changed to something that is an external structure now."
+ self compileFieldsSafely. + self externalType becomeKnownTypeSafely.! - [self compileFields] - ifError: [ "Ignore unfinished field specs" ]. - self externalType isUnknownType - ifTrue: [self externalType becomeKnownTypeSafely].!
Item was added: + ----- Method: ExternalType>>becomeKnownTypeSafely (in category 'private') ----- + becomeKnownTypeSafely + "Ignore. We are already a known type." + + self assert: [self isUnknownType not].!
Item was changed: ----- Method: ExternalUnknownType>>becomeKnownTypeSafely (in category 'construction') ----- becomeKnownTypeSafely "Give me some purpose. :-)"
^ [self becomeKnownType] + ifError: [:msg | + Transcript showln: '[FFI] Type still unknown: ', msg. - on: Error - do: [ self assert: [self isUnknownType]. self].!
packages@lists.squeakfoundation.org