Matheus Moreira
Matheus Moreira

Reputation: 17020

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?

Upvotes: 4

Views: 1280

Answers (1)

Vasiliy Ermolovich
Vasiliy Ermolovich

Reputation: 24617

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

Upvotes: 9

Related Questions