Thanks, it works I get an instance of FFIOpaqueObject. But how do I get a specific libusb_device object from the list? Thanks again for you quick answer :-). Julien On 01/07/16 11:44, Esteban Lorenzano wrote:
Hi,
an opaque structure is not an FFIExternalObject but an FFIOpaqueObject. in that case, something like (simplified):
ctx := (your context). list := FFIOpaqueObject new. size := self getDevice: ctx list: list.
getDevice: ctx list: list ^ self ffiCall: #(size_t libusb_get_device_list (libusb_context *ctx, FFIOpaqueObject ***list))
should work (note that of course you can make libusb_device an alias for your type⦠that does not matters much, this is just a simplification).
if this does not works, if you can provide me code to reproduce it, I can give it a shot and see what happens :)
Esteban
On 01 Jul 2016, at 11:19, Julien Delplanque <julien@tamere.eu> wrote:
Hello everyone,
I have a question about the UFFI API. I have the following function:
ssize_t libusb_get_device_list (libusb_context *ctx, libusb_device ***list)
where libusb_device is an opaque structure.
I made a type mapping "ssize_t" -> "int" and an object inheriting from FFIExternalObject for the "libusb_context" (others methods using it are working).
I can not find how to get an array filled with libusb_device using UFFI from Pharo. :-(
Thanks in advance,
Julien