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..
In reply to Terrible Trouble With Typemaps (XS Question) by Molt
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |