Subject: [ruby-ffi] Functions returning structures |
From: galdor |
Date: 12/14/09 3:29 PM |
To: ruby-ffi |
Hi,
Let's define a C function which returns a plain structure:
typedef struct {
int r, g, b, a;
} ALLEGRO_COLOR;
ALLEGRO_COLOR al_map_rgb(unsigned char r, unsigned char g,
unsigned char b);
Now we bind it:
class ALLEGRO_COLOR < FFI::Struct
layout :r, :float,
:g, :float,
:b, :float,
:a, :float
end
attach_function :al_map_rgb, [:uchar, :uchar, :uchar],
ALLEGRO_COLOR
But the following ruby code doesn't work:
bgcolor = al_map_rgb(20, 20, 20)
fgcolor = al_map_rgb(20, 40, 80)
al_clear_to_color(bgcolor)
The screen is cleared with rgb(20, 40, 80), instead of rgb(20, 20,
20).
I don't know how stack allocation is performed, I must be doing
something wrong.
How should I work with stack-allocated structures ?
Regards,
Nicolas Martyanoff