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.
print_declaration
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.