Hi there!,

It is great to hear that it is being useful. Currently I am taking some
vacations, so I will probably be without Internet access for some days.
Currently the most missing parts are documentation, which I am going to
write when having some time.

Here are some early details, before I start properly documenting them:
·This is heavily based in the C# bindings. There are additional typemaps
such as nbtype, nbin and nbout. They are similar to the cstype, csin and
csout typemaps presents the C# generator.
·They are two Smalltalk class and some common superclasses generated. One
Smalltalk class contains all the NB-FFI callout methods, another contains
wrappers for all the global C/C++ stuff.
·For each C++ a Smalltalk class is generated.
·The common superclass provides a destroy method for destroying an object.
·The extra overhead in new are to register properly with the GC.
·The C pointer is wrapped in a reference object that contains things for
properly interact with the GC and destroying C++ object avoiding crashing
the VM.

Swig usually makes some kind of opaque type for some pointers. If they are
intended to be an Array, maybe some extra typemaps has to be added. More
information about typemaps is on the SWIG manual.

I took that kind of approach because it gives more flexibility, but it
provides probably a reduced performance in comparison with placing the
callouts directly in the wrapped classes. Some people that saw this when
developing this did not like this approach.

I will document all of this more properly later, but I have to go now
because I am in a hurry.

Best regards,
Ronie Salgado


2014-02-21 7:16 GMT-03:00 [email protected] <[email protected]>:

> Excellent!!!!
>
> That's really a missing block coming to life!
>
> I'll try it this weekend on my Linux system.
>
> Phil
>
>
>
> On Fri, Feb 21, 2014 at 10:24 AM, Göran Krampe <[email protected]> wrote:
>
>> Hi all!
>>
>> On 01/22/2014 09:25 PM, Ronie Salgado wrote:
>>
>>> I started working on extending SWIG to generate bindings for NativeBoost
>>> FFI, using as a reference the C# binding generator. I am committing my
>>> work on this into https://github.com/ronsaldo/swig/ .
>>>
>>
>> Just wanted to report that this stuff WORKS :)
>>
>> * I cloned down Ronie's SWIG. Did the autogen.sh, ./configure, make, make
>> install dance.
>> * I went into Examples/ruby/value and:
>>         * Changed module name to "Example" (instead of "example")
>>         * Ran: swig -pharo example.i (produces C code and Example.st)
>>         * Compile: gcc -m32 -c -fpic -fPIC example_wrap.c example.c
>>         * Link: gcc -m32 -shared example.o example_wrap.o -o Example.so
>> * Then I filed in Example.st into Pharo 2.0, and put Example.so in the
>> directory where I started the pharo VM.
>>
>> And well, after fixing some buglets (if you want to recreate this, email
>> me or ask here) it works! I added a little test class for fun.
>>
>> Fantastic stuff! Sure, not complete by any means, but hey, it worked and
>> not a single VM crash while playing with it. Ronie - good work!
>>
>> If you are on a Linux, I attached these two files. File into Pharo 2.0,
>> open TestRunner and run ExampleTest.
>>
>> regards, Göran
>>
>
>

Reply via email to