Marcel Taeumel uploaded a new version of FFI-Kernel to project FFI:
http://source.squeak.org/FFI/FFI-Kernel-mt.82.mcz ==================== Summary ==================== Name: FFI-Kernel-mt.82 Author: mt Time: 1 June 2020, 9:58:11.800523 am UUID: ace0c4b6-24ce-a847-ae5f-6f2e281592f4 Ancestors: FFI-Kernel-mt.81 Fixes bug in external type's #storeOn:. Removes ambiguous #externalTypeName, which actually generated a #storeString for the pointer type. =============== Diff against FFI-Kernel-mt.81 =============== Item was changed: ----- Method: ExternalStructure class>>defineAliasAccessorsFor:type: (in category 'field definition') ----- defineAliasAccessorsFor: fieldName type: type "Define read/write accessors for the given field" | code refClass argName | (type isVoid and:[type isPointerType not]) ifTrue:[^self]. refClass := type referentClass. code := String streamContents:[:s| s nextPutAll: fieldName; crtab; nextPutAll:'"This method was automatically generated"'; crtab; nextPut: $<; nextPutAll: #generated; nextPut: $>; crtab. refClass == nil ifTrue:[(type isAtomic and:[type isPointerType not]) ifTrue:[s nextPutAll:'^handle'] ifFalse:[s nextPutAll:'^ExternalData fromHandle: handle'. type isPointerType ifTrue:[s nextPutAll:' asExternalPointer']. s nextPutAll:' type: '; + nextPutAll: type asPointerType storeString]] - nextPutAll: type externalTypeName]] ifFalse:[s nextPutAll:'^', refClass name,' fromHandle: handle'. type isPointerType ifTrue:[s nextPutAll:' asExternalPointer']]]. self compile: code classified: 'accessing'. code := String streamContents:[:s| argName := refClass == nil ifTrue:[(type isAtomic and:[type isPointerType not]) ifTrue:['anObject'] ifFalse:['anExternalData']] ifFalse:['a',refClass name]. s nextPutAll: fieldName,': '; nextPutAll: argName; crtab; nextPutAll:'"This method was automatically generated"'; crtab; nextPut: $<; nextPutAll: #generated; nextPut: $>; crtab. (refClass == nil and:[type isAtomic and:[type isPointerType not]]) ifTrue:[s nextPutAll:'handle := ', argName] ifFalse:[s nextPutAll:'handle := ', argName,' getHandle'. type isPointerType ifTrue:[s nextPutAll:' asByteArrayPointer']]]. self compile: code classified: 'accessing'.! Item was removed: - ----- Method: ExternalType>>externalTypeName (in category 'private') ----- - externalTypeName - ^'ExternalType ', (AtomicTypeNames at: self atomicType), ' asPointerType'! Item was changed: ----- Method: ExternalType>>storeOn: (in category 'printing') ----- storeOn: aStream referentClass == nil ifTrue:[aStream nextPutAll: ExternalType name; space; nextPutAll: (AtomicTypeNames at: self atomicType)] ifFalse:[aStream nextPut: $(; nextPutAll: ExternalType name; space; nextPutAll: #structTypeNamed:; space; store: referentClass name; nextPut: $)]. + self isPointerType ifTrue: [aStream space; nextPutAll: #asPointerType].! - self isPointerType ifTrue: [aStream space; nextPutAll: #asPointer].! |
Free forum by Nabble | Edit this page |