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