[MacRuby-devel] How to use custom C struct's?
Laurent Sansonetti
lsansonetti at apple.com
Wed Aug 5 12:57:54 PDT 2009
On Aug 5, 2009, at 8:41 AM, Eloy Duran wrote:
> Hi,
>
> On Aug 5, 2009, at 5:31 PM, Clay Bridges wrote:
>> The google didn't yield much guidance on this. Before I started a
>> deep-dive on the MacRuby source, and/or the standard ruby way to
>> handle this sort of thing, I thought I would ask a couple of
>> questions:
>>
>> 1) Any easy advice?
>
> Yes, use RubyCocoa
>
>> 2) Is this different in MacRuby than in ruby proper?
>
> RubyCocoa at least allows you to use BridgeSupport which would allow
> you to map these. Afaik MacRuby doesn't fully support it yet.
>
>> 3) Any pointers into the MacRuby source that might help me?
>
> BridgeSupport needs to fully implemented.
FYI, BridgeSupport is mostly implemented in MacRuby, at least the part
that deals with C structures. The only part that we didn't implement
yet is C function pointers, the rest (roughly 90%) is done, and it is
faster / more stable than the RubyCocoa code (you will have to believe
me, since I wrote both :-)).
What Clay needs to do is describe his C structures in a .bridgesupport
file.
You can read the BridgeSupport(5) man-page for more information.
Unfortunately the gen_bridge_metadata(1) cannot generate C structures
metadata without a template, and this part is not yet documented. So
it may be faster to craft the .bridgesupport file by hand. There are
plenty of .bridgesupport files in /System/Library/Frameworks that can
be used as an example.
Once the file is created, it can loaded from MacRuby using:
load_bridge_support_file 'foo.bridgesupport'
Laurent
More information about the MacRuby-devel
mailing list