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

NAME

Clownfish::Binding::Perl::Subroutine - Abstract base binding for a Clownfish::Function.

SYNOPSIS

    # Abstract base class.

DESCRIPTION

This class is used to generate binding code for invoking Clownfish's functions and methods across the Perl/C barrier.

METHODS

new

    my $binding = $subclass->SUPER::new(
        param_list         => $param_list,           # required
        alias              => 'pinch',               # required
        class_name         => 'Crustacean::Claw',    # required
        retval_type        => $type,                 # required
        use_labeled_params => 1,                     # default: false
    );

Abstract constructor.

  • param_list - A Clownfish::ParamList.

  • alias - The local, unqualified name for the Perl subroutine that will be used to invoke the function.

  • class_name - The name of the Perl class that the subroutine belongs to.

  • retval_type - The return value's Type.

  • use_labeled_params - True if the binding should take hash-style labeled parameters, false if it should take positional arguments.

xsub_def

Abstract method which must return C code (not XS code) defining the Perl XSUB.

var_declarations

Generate C code containing declarations for subroutine-specific automatic variables needed by the XSUB.

get_class_name use_labeled_params

Accessors.

perl_name

Returns the fully-qualified perl sub name.

c_name

Returns the fully-qualified name of the C function that implements the XSUB.

c_name_list

Returns a string containing the names of arguments to feed to bound C function, joined by commas.

params_hash_def

Return Perl code initializing a package-global hash where all the keys are the names of labeled params. The hash's name consists of the the binding's perl_name() plus "_PARAMS".

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.