FFI: FFI-Kernel-mt.176.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

FFI: FFI-Kernel-mt.176.mcz

commits-2
Marcel Taeumel uploaded a new version of FFI-Kernel to project FFI:
http://source.squeak.org/FFI/FFI-Kernel-mt.176.mcz

==================== Summary ====================

Name: FFI-Kernel-mt.176
Author: mt
Time: 27 May 2021, 2:23:46.798609 pm
UUID: c7798b80-05bc-ba49-a177-790da21a663a
Ancestors: FFI-Kernel-mt.175

Fixes #allocate for alias-to-array types.
Fixes field access for alias-to-array types.
Adds #pointer alias to quickly get a pointer type.
Adds #type:at:(put:) as convenient way to fill a byte array with a mix of typed contents.

=============== Diff against FFI-Kernel-mt.175 ===============

Item was changed:
  ----- Method: ByteArray>>pointerAt: (in category '*FFI-Kernel-examples') -----
  pointerAt: byteOffset
  "For documentation and convenient exploration only. Type-safe access to byte arrays or external addresses SHOULD happen via external objects that have a type set such as instances of ExternalStructure and ExternalData."
 
+ ^ ExternalType pointer handle: self at: byteOffset!
- ^ ExternalType void asPointerType handle: self at: byteOffset!

Item was changed:
  ----- Method: ByteArray>>pointerAt:put: (in category '*FFI-Kernel-examples') -----
  pointerAt: byteOffset put: value
  "For documentation and convenient exploration only. Type-safe access to byte arrays or external addresses SHOULD happen via external objects that have a type set such as instances of ExternalStructure and ExternalData."
 
+ ^ ExternalType pointer handle: self at: byteOffset put: value!
- ^ ExternalType void asPointerType handle: self at: byteOffset put: value!

Item was added:
+ ----- Method: ByteArray>>type:at: (in category '*FFI-Kernel') -----
+ type: spec at: byteOffset
+ "For convenience, when the receiver needs to filled with a mix of typed contents. See FFICallback for an example."
+
+ ^ (ExternalType lookupType: spec) handle: self at: byteOffset!

Item was added:
+ ----- Method: ByteArray>>type:at:put: (in category '*FFI-Kernel') -----
+ type: spec at: byteOffset put: value
+ "For convenience, when the receiver needs to filled with a mix of typed contents. See FFICallback for an example."
+
+ ^ (ExternalType lookupType: spec) handle: self at: byteOffset put: value!

Item was changed:
  ----- Method: ExternalArrayType>>allocate (in category 'external data') -----
  allocate
 
+ | data |
+ data := self contentType allocate: self size.
+ ^ self isTypeAlias
+ ifTrue: [referentClass fromHandle: data getHandle]
+ ifFalse: [data]!
- ^ self contentType allocate: self size!

Item was added:
+ ----- Method: ExternalTypeAlias>>at: (in category 'proxy') -----
+ at: index
+ "Compatibility for alias-to-array types."
+
+ ^ self value at: index!

Item was added:
+ ----- Method: ExternalTypeAlias>>at:put: (in category 'proxy') -----
+ at: index put: object
+ "Compatibility for alias-to-array types."
+
+ ^ self value at: index put: object!