NAME

ExtUtils::XSpp::Node::Function - Node representing a function

DESCRIPTION

An ExtUtils::XSpp::Node subclass representing a single function declaration such as

int foo();

More importantly, ExtUtils::XSpp::Node::Method inherits from this class, so all in here equally applies to method nodes.

METHODS

new

Creates a new ExtUtils::XSpp::Node::Function.

Named parameters: cpp_name indicating the C++ name of the function, perl_name indicating the Perl name of the function (defaults to the same as cpp_name), arguments can be a reference to an array of ExtUtils::XSpp::Node::Argument objects and finally ret_type indicates the (C++) return type of the function.

Additionally, there are several optional decorators for a function declaration (see ExtUtils::XSpp for a list). These can be passed to the constructor as code, cleanup, postcall, and catch. catch is special in that it must be a reference to an array of class names.

resolve_typemaps

Fetches the ExtUtils::XSpp::Typemap object for the return type and the arguments from the typemap registry and stores a reference to those objects.

resolve_exceptions

Fetches the ExtUtils::XSpp::Exception object for the %catch directives associated with this function.

add_exception_handlers

Adds a list of exception names to the list of exception handlers. This is mainly called by a class' add_methods method. If the function is hard-wired to have no exception handlers, any extra handlers from the class are ignored.

Returns a string with a C++ method declaration for the node.

perl_function_name

Returns the name of the Perl function to generate.

is_method

Returns whether the object at hand is a method. Hard-wired to be false for ExtUtils::XSpp::Node::Function object, but overridden in the ExtUtils::XSpp::Node::Method sub-class.

has_argument_with_length

Returns true if the function has any argument that uses the XS length feature.

ACCESSORS

cpp_name

Returns the C++ name of the function.

perl_name

Returns the Perl name of the function (defaults to same as C++).

set_perl_name

Sets the Perl name of the function.

arguments

Returns the internal array reference of ExtUtils::XSpp::Node::Argument objects that represent the function arguments.

ret_type

Returns the C++ return type.

code

Returns the %code decorator if any.

set_code

Sets the implementation for the method call (equivalent to using %code); takes the code as an array reference containing the lines.

cleanup

Returns the %cleanup decorator if any.

postcall

Returns the %postcall decorator if any.

catch

Returns the set of exception types that were associated with the function via %catch. (array reference)

aliases

Returns a hashref of name => position function name aliases (see %alias and perlxs ALIAS keyword). Does not include the main function name.

set_static

Sets the static-ness attribute of the function. Can be either undef (i.e. not static), "package_static", or "class_static".

package_static

Returns whether the function is package static. A package static function can be invoked as:

My::Package::Function( ... );

class_static

Returns whether the function is class static. A class static function can be invoked as:

My::Package->Function( ... );

ret_typemap

Returns the typemap for the return value of the function.

set_ret_typemap( typemap )

Sets the typemap for the return value of the function.

arg_typemap( index )

Returns the typemap for one function arguments.

set_arg_typemap( index, typemap )

Sets the typemap for one function argument.