Как мне указать структуру в качестве возвращаемого значения функции в RubyFFI? - PullRequest
4 голосов
/ 21 марта 2011

Мне нужно загрузить несколько функций, которые возвращают структуры из самой библиотеки.

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

Вики-страницы RubyFFI кажутся устаревшими, поэтому я немного растерялся.

Каксоздать FFI::Struct и как указать его в качестве типа возврата нативной функции?

1 Ответ

8 голосов
/ 21 марта 2011
class SOME_STRUCT < FFI::Struct 
    layout :a, :float, 
           :b, :float
end

, а затем

attach_function 'fn_name', [], SOME_STRUCT

и если это структура, выделенная стеком:

typedef struct
{ 
    float a, b; 
} SOME_STRUCT;

Вы должны использовать это:

attach_function 'fn_name', [], SOME_STRUCT.by_value
...