Eliot Miranda uploaded a new version of FFI-Kernel to project FFI: http://source.squeak.org/FFI/FFI-Kernel.terf-eem.188.mcz
==================== Summary ====================
Name: FFI-Kernel.terf-eem.188 Author: eem Time: 2 August 2021, 11:26:54.33527 am UUID: 59d1cf8c-e906-4d9b-9a75-995d353872f9 Ancestors: FFI-Kernel.terf-eem.187
fix another variable shadowing warning
=============== Diff against FFI-Kernel.terf-eem.187 ===============
Item was changed: ----- Method: ExternalStructure class>>compileStructureSpec:withAccessors: (in category 'field definition - support') ----- compileStructureSpec: specArray withAccessors: aSymbol "Compile a type specification for the FFI calls. Return the newly compiled spec. Eventually generate the field accessors according to following rules: - aSymbol = #always always generate the accessors - aSymbol = #never never generate the accessors - aSymbol = #generated only generate the auto-generated accessors - aSymbol = #absent only generate the absent accessors" | newByteAlignment byteOffset typeSpec newCompiledSpec | byteOffset := 0. newByteAlignment := self minStructureAlignment. typeSpec := WriteStream on: (WordArray new: 10). typeSpec nextPut: FFIFlagStructure. specArray do: [:spec | | fieldName fieldTypeName fieldType typeSize fieldAlignment | fieldName := spec first. fieldTypeName := spec second. fieldType := (ExternalType typeNamed: fieldTypeName) ifNil: [self errorTypeNotFound: spec second]. typeSize := fieldType byteSize. fieldAlignment := (fieldType byteAlignment max: self minFieldAlignment) min: self maxFieldAlignment. byteOffset := byteOffset alignedTo: fieldAlignment. newByteAlignment := newByteAlignment max: fieldAlignment. spec size > 2 ifTrue: "extra size" + [spec third < typeSize ifTrue: + [^ self error: 'Explicit type size is less than expected']. - [spec third < typeSize - ifTrue: [^ self error: 'Explicit type size is less than expected']. typeSize := spec third]. (fieldName notNil and: [self shouldGenerate: fieldName policy: aSymbol]) ifTrue: [self generateStructureFieldAccessorsFor: fieldName startingAt: byteOffset + 1 type: fieldType]. typeSpec nextPutAll: (fieldType embeddedSpecWithSize: typeSize). byteOffset := byteOffset + typeSize]. newByteAlignment := newByteAlignment min: self maxStructureAlignment. byteOffset := byteOffset alignedTo: newByteAlignment. newCompiledSpec := typeSpec contents. newCompiledSpec at: 1 put: (byteOffset bitOr: FFIFlagStructure). self setCompiledSpec: newCompiledSpec byteAlignment: newByteAlignment!
Item was changed: ----- Method: ExternalUnion class>>compileStructureSpec:withAccessors: (in category 'field definition - support') ----- compileStructureSpec: specArray withAccessors: aSymbol "Compile a type specification for the FFI machinery. Return the newly compiled spec. Eventually generate the field accessors according to the policy defined in aSymbol." | byteOffset maxByteSize typeSpec newCompiledSpec newByteAlignment | byteOffset := 1. newByteAlignment := 1. maxByteSize := 0. typeSpec := WriteStream on: (WordArray new: specArray size + 1). typeSpec nextPut: FFIFlagStructure. + specArray do: + [:spec | | fieldName fieldTypeName fieldType typeSize typeAlignment | - specArray do: [:spec | - | fieldName fieldTypeName externalType typeSize typeAlignment | fieldName := spec first. fieldTypeName := spec second. + fieldType := (ExternalType typeNamed: fieldTypeName) ifNil: [self errorTypeNotFound: spec second]. + typeSize := fieldType byteSize. + typeAlignment := fieldType byteAlignment. + spec size > 2 ifTrue: "extra size" + [spec third < typeSize ifTrue: + [^ self error: 'Explicit type size is less than expected']. + typeSize := spec third]. + (fieldName notNil and: [self shouldGenerate: fieldName policy: aSymbol]) ifTrue: + [self generateStructureFieldAccessorsFor: fieldName startingAt: byteOffset type: fieldType]. + typeSpec nextPutAll: (fieldType embeddedSpecWithSize: typeSize). - externalType := (ExternalType typeNamed: fieldTypeName) - ifNil: [self errorTypeNotFound: spec second]. - typeSize := externalType byteSize. - typeAlignment := externalType byteAlignment. - spec size > 2 ifTrue: ["extra size" - spec third < typeSize - ifTrue: [^ self error: 'Explicit type size is less than expected']. - typeSize := spec third. - ]. - (fieldName notNil and: [self shouldGenerate: fieldName policy: aSymbol]) ifTrue: [ - self generateStructureFieldAccessorsFor: fieldName startingAt: byteOffset type: externalType. - ]. - typeSpec nextPutAll: (externalType embeddedSpecWithSize: typeSize). maxByteSize := maxByteSize max: typeSize. + newByteAlignment := newByteAlignment max: typeAlignment]. - newByteAlignment := newByteAlignment max: typeAlignment - ]. maxByteSize := maxByteSize alignedTo: newByteAlignment. newCompiledSpec := typeSpec contents. newCompiledSpec at: 1 put: (maxByteSize bitOr: FFIFlagStructure). self setCompiledSpec: newCompiledSpec + byteAlignment: newByteAlignment! - byteAlignment: newByteAlignment.!
packages@lists.squeakfoundation.org