Subject:
[ruby-ffi] 2D arrays
From:
galdor
Date:
12/10/09 5:51 PM
To:
ruby-ffi

Hi,

I'm trying to bind the following structure:

struct ALLEGRO_TRANSFORM {
   float m[4][4];
};

But with the following FFI declaration:

class ALLEGRO_TRANSFORM < FFI::Struct
    layout :m, [[:float, 4], 4]
end

I get the following error:

/usr/lib/ruby/gems/1.9.1/gems/ffi-0.6.0pre/lib/ffi/struct.rb:177:in
`add_array': undefined method `alignment' for [:float, 4]:Array
(NoMethodError)
        from /usr/lib/ruby/gems/1.9.1/gems/ffi-0.6.0pre/lib/ffi/
struct.rb:177:in `array_layout'
        from /usr/lib/ruby/gems/1.9.1/gems/ffi-0.6.0pre/lib/ffi/
struct.rb:106:in `layout'
        from lib/allegro/ffi_allegro.rb:558:in
`<class:ALLEGRO_TRANSFORM>'
        from lib/allegro/ffi_allegro.rb:557:in `<module:Allegro>'
        from lib/allegro/ffi_allegro.rb:4:in `<main>'

Is there a specific syntax for 2D arrays ?

Regards,

Nicolas Martyanoff