Hi,

I'm trying to play with new UFFI system. It looks much easier then
NativeBoost, but unfortunately its hard to find any docs or examples.
I have problem with casting void* (ExternalAddress) into smalltalk object if
there is no hardcoded type in ffi method. And I really dislike the idea of
making many ffi methods, one for each required type.
In this example i can't understand how to make something like `address
castTo: type`

FFIExternalObject subclass: #Iterator

Iterator >> asCollectionOfType: aTypeName
        | result address type |
        
        result := OrderedCollection new.
        address := ExternalAddress new.
        type := FFIExternalType resolveType: aTypeName.
        [self iterator_next: address] whileTrue: [
                result add: (address castTo: type).
        ].
    ^result

Iterator >> iterator_next: data
        ^ self ffiCall: #(Boolean iterator_next (Iterator self, void** data))




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply via email to