Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I specify a struct as the return value of a function in RubyFFI?

I have to load several functions that return structures from the library itself.

attach_function 'fn_name', [], # ... What do I put here?

RubyFFI's Wiki pages seem to be outdated, so I'm a little lost here.

How do I create a FFI::Struct, and how do I specify it as the return type of a native function?

like image 909
Matheus Moreira Avatar asked Feb 25 '23 18:02

Matheus Moreira


1 Answers

class SOME_STRUCT < FFI::Struct 
    layout :a, :float, 
           :b, :float
end

and then

attach_function 'fn_name', [], SOME_STRUCT

and if it stack-allocated struct:

typedef struct
{ 
    float a, b; 
} SOME_STRUCT;

you should use this:

attach_function 'fn_name', [], SOME_STRUCT.by_value
like image 184
Vasiliy Ermolovich Avatar answered Apr 06 '23 04:04

Vasiliy Ermolovich