Molt has asked for the wisdom of the Perl Monks concerning the following question:
I'm currently working on connecting Perl with C++ via XS, only I'm hitting a problem when it comes to typemaps.. or lack of same.
At the moment I'm handling C++'s method overloading with something with the following basic structure (plus extra error checking, removed here for clarity):
int MyClass::countItemsIn (...) CODE: if (sv_derived_from(ST(0), 'MyList')) { RETVAL=THIS->countItemsIn( *(MyList *) SvIV((SV*)SvRV(ST(0))) ); } elsif (sv_derived_from(ST(0), 'MyHash')) { RETVAL=THIS->countItemsIn( *(MyHash *) SvIV((SV*)SvRV(ST(0))) ); } OUTPUT: RETVAL
..now I can happily write this kind of code, but what's worrying me is "Where are the typemaps?". If I were to do all of the conversions manually I'm a lot more likely to make mistakes, and basically mess it all up. I'm also considering wrapping things in a very different way so being able to change the effective mapping would be exceptionally useful.
What is the best way to approach this, is there a way to call typemap conversions as 'functions' in XS? If not, shall I wrap the XS code for the typemap conversion in a nice little method and call that?
EDIT: Changed wording slightly, this doesn't seem to be the 'best' version to me at all..
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Terrible Trouble With Typemaps (XS Question)
by dragonchild (Archbishop) on Sep 07, 2004 at 12:25 UTC | |
by Molt (Chaplain) on Sep 07, 2004 at 14:38 UTC | |
by dragonchild (Archbishop) on Sep 07, 2004 at 16:41 UTC | |
by Molt (Chaplain) on Sep 09, 2004 at 11:03 UTC |