ExtUtils::XSpp::Node::Function - Node representing a function
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.
Creates a new ExtUtils::XSpp::Node::Function.
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.
cpp_name
perl_name
arguments
ExtUtils::XSpp::Node::Argument
ret_type
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.
code
cleanup
postcall
catch
Fetches the ExtUtils::XSpp::Typemap object for the return type and the arguments from the typemap registry and stores a reference to those objects.
Fetches the ExtUtils::XSpp::Exception object for the %catch directives associated with this function.
%catch
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.
add_methods
Returns a string with a C++ method declaration for the node.
Returns the name of the Perl function to generate.
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.
Returns true if the function has any argument that uses the XS length feature.
Returns the C++ name of the function.
Returns the Perl name of the function (defaults to same as C++).
Sets the Perl name of the function.
Returns the internal array reference of ExtUtils::XSpp::Node::Argument objects that represent the function arguments.
Returns the C++ return type.
Returns the %code decorator if any.
%code
Sets the implementation for the method call (equivalent to using %code); takes the code as an array reference containing the lines.
Returns the %cleanup decorator if any.
%cleanup
Returns the %postcall decorator if any.
%postcall
Returns the set of exception types that were associated with the function via %catch. (array reference)
Returns a hashref of name => position function name aliases (see %alias and perlxs ALIAS keyword). Does not include the main function name.
name => position
Sets the static-ness attribute of the function. Can be either undef (i.e. not static), "package_static", or "class_static".
static
"package_static"
"class_static"
Returns whether the function is package static. A package static function can be invoked as:
My::Package::Function( ... );
Returns whether the function is class static. A class static function can be invoked as:
My::Package->Function( ... );
Returns the typemap for the return value of the function.
Sets the typemap for the return value of the function.
Returns the typemap for one function arguments.
Sets the typemap for one function argument.
To install ExtUtils::XSpp, copy and paste the appropriate command in to your terminal.
cpanm
cpanm ExtUtils::XSpp
CPAN shell
perl -MCPAN -e shell install ExtUtils::XSpp
For more information on module installation, please visit the detailed CPAN module installation guide.