double cos( double x )
/* No need to write the trivial XS wrapper, just the declaration */
####
package Math::MyWrapper;
use Math::MyWrapper::XS();
use Exporter 'import';
our @EXPORT_OK = qw< cos ... >;
sub new {
require Math::MyWrapper::Class;
return "Math::MyWrapper::Class";
}
sub cos {
my( $x ) = @_;
return Math::MyWrapper::XS::cos( $x );
}
...
####
package Math::MyWrapper::Class;
use Math::MyWrapper();
for my $sub ( @Math::MyWrapper::EXPORT_OK ) {
eval "sub $sub { Math::MyWrapper::$sub( \@_[1..\$#_] ) }; 1"
or die "Error building $sub method: $@\n";
}
1