ExtUtils::XSpp::Node::Argument - Node representing a method/function argument

- NAME
- DESCRIPTION
- METHODS
  - new
  - uses_length
  - implementation_name
  - fix_name_in_code
- ACCESSORS
  - type
  - name
  - default
  - has_default
  - function
  - index

# NAME

ExtUtils::XSpp::Node::Argument - Node representing a method/function argument

# DESCRIPTION

An ExtUtils::XSpp::Node subclass representing a single function or method argument such as

      int foo = 0.

which would translate to an `ExtUtils::XSpp::Node::Argument` which has its `type` set to `int`, its `name` set to `foo` and its `default` set to `0.`.

# METHODS

## new

Creates a new `ExtUtils::XSpp::Node::Argument`.

Named parameters: `type` indicating the C++ argument type, `name` indicating the variable name, and optionally `default` indicating the default value of the argument.

## uses_length

Returns true if the argument uses the XS length feature, false otherwise.

## implementation_name

Returns the same as the `name` method unless the argument is of the `%length(something)` variant. In that case, `implementation_name` returns a munged version of the name that addresses the name mangling done by xsubpp: `XSauto_length_of_somthing`.

## fix_name_in_code

Given a code string, replaces any occurrances of the name of this `Argument` with its implementation name. If the implementation name is the same as the name, which is the most likely case, the code remains completely untouched.

Returns the potentially modified code.

# ACCESSORS

## type

Returns the type of the argument.

## name

Returns the variable name of the argument variable.

## default

Returns the default for the function parameter if any.

## has_default

Returns whether there is a default for the function parameter.

## function

Returns a reference to the containing function/method.

## index

Returns the 0-based index of the argument in the argument list.

ExtUtils::XSpp::Node::Argument - Node representing a method/function argument