Simon Wistow <[EMAIL PROTECTED]> writes:
>On Thu, Feb 19, 2004 at 05:53:24PM -0500, Randy W. Sims said:
>> I'm just catching up on some of the mailing lists, and it looks like no 
>> ones answered your question, so...
>>
>
>Much appreciated.
>
>> Unfortunatelly, there is little up-to-date documentation on mixing C++ 
>> with XS (at least that I know about) although it is pretty well 
>> supported. The best that I know of is a very brief section in "Extending 
>> and Embedding Perl" <http://www.manning.com/jenness> 
>
>I ended up prodding Simon Coznes and then getting the book and 
>some general good old fashioned beating it to death until I managed 
>to get it all working.
>
>I ended using a typemap like
>
>TYPEMAP
>Reelmaker *     O_OBJECT
>float           T_NV
>    
>OUTPUT
># The Perl object is blessed into 'CLASS', which should be a
># char* having the name of the package for the blessing.
>O_OBJECT
>        sv_setref_pv( $arg, CLASS, (void*)$var );
>
>    
>INPUT
>O_OBJECT
>    if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
>                $var = ($type)SvIV((SV*)SvRV( $arg ));
>        else{
>                warn( \"${Package}::$func_name() -- $var is not a 
>                                       blessed SV reference\" );
>                XSRETURN_UNDEF;
>    }  
>
>
>
>
>
>and after that adding all the functions was laughably simple to the 
>point where I'm thinking of just writign a script that will rampage 
>though and generate the XS for me.

I have one which I must try and shake loose from day job.
It runs g++ -E and though output for C++ public API of class(es)
and builds a perl shadow class heirachy that matches the C++ 
public API. 


>
>I'd be happy to write up some faqs or a Perl.com article on what I did,
>especially since I was simultaneously wrapping the same library in
>Python and Lua.

Mine does perl and has beginings of Java.


>
>FWIW I was also used Module::Build rather and ExtUtils::MakeMaker

Well worth an article then!

>
>Simon

Reply via email to