The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Clownfish::Binding::Perl::TypeMap - Convert between BP and Perl via XS.

DESCRIPTION

TypeMap serves up C code fragments for translating between Perl data structures and Clownfish data structures. The functions to_perl() and from_perl() achieve this for individual types; write_xs_typemap() exports all types using the XS "typemap" format documented in perlxs.

FUNCTIONS

from_perl

    my $c_code = from_perl( $type, $bp_var, $xs_var, $stack_var );

Return C code which converts from a Perl scalar to a variable of type $type.

Variable declarations must precede the returned code, as from_perl() won't make any declarations itself.

  • type - A Clownfish::Type, which will be used to select the mapping code.

  • bp_var - The name of the variable being assigned to.

  • xs_var - The C name of the Perl scalar from which we are extracting a value.

  • stack_var - Only required needed when type is Clownfish::Object indicating that bp_var is an either an Obj or a CharBuf. When passing strings or other simple types to Clownfish functions from Perl, we allow the user to supply simple scalars rather than forcing them to create Clownfish objects. We do this by creating a ZombieCharBuf on the stack and assigning the string from the Perl scalar to it. stack_var is the name of that ZombieCharBuf wrapper.

to_perl

    my $c_code = to_perl( $type, $xs_var, $bp_var );

Return C code which converts from a variable of type $type to a Perl scalar.

Variable declarations must precede the returned code, as to_perl() won't make any declarations itself.

  • type - A Clownfish::Type, which will be used to select the mapping code.

  • xs_var - The C name of the Perl scalar being assigned to.

  • bp_var - The name of the variable from which we are extracting a value.

CLASS METHODS

write_xs_typemap

    Clownfish::Binding::Perl::Typemap->write_xs_typemap(
        hierarchy => $hierarchy,
    );

Auto-generate a "typemap" file that adheres to the conventions documented in perlxs.

We generate this file on the fly rather than maintain a static copy because we want an entry for each Clownfish type so that we can differentiate between them when checking arguments. Keeping the entries up-to-date manually as classes come and go would be a pain.

COPYRIGHT AND LICENSE

Copyright 2008-2010 Marvin Humphrey

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.