Before we conclude the essential part of this chapter, let us quickly recap all the places where you can plug in code to help XS and SWIG produce a smooth interface (for the script programmer):
- Perl module
So far, the Perl module produced by these tools has been used only to bootstrap the C code, but there's no reason why it shouldn't have some custom subroutines too. The XS example presented earlier, in the "Modifying Parameters" section, could easily have been implemented in Perl space.
- Typemaps
Supply snippets of code to convert between Perl and C data types.
- Wrapper code in the interface files
The CODE and PPCODE directives allow you to insert a variety of custom translation tasks. In SWIG, you can inline custom C code as follows:
%module FunMath
%inline %{
int factorial(int n){return (n == 1) ? 1 : n *(n -1)};
%}