Provided by: libextutils-xspp-perl_0.1800-3_all bug

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.