.. _modifying-arguments: Modifying Arguments ------------------- remove-argument ^^^^^^^^^^^^^^^ The remove-argument node removes the given argument from the function's signature, and it is a child of the modify-argument node. .. code-block:: xml remove-default-expression ^^^^^^^^^^^^^^^^^^^^^^^^^ The remove-default-expression node disables the use of the default expression for the given argument, and it is a child of the modify-argument node. .. code-block:: xml replace-default-expression ^^^^^^^^^^^^^^^^^^^^^^^^^^ The replace-default-expression node replaces the specified argument with the expression specified by the ``with`` attribute, and it is a child of the modify-argument node. .. code-block:: xml replace-type ^^^^^^^^^^^^ The replace-type node replaces the type of the given argument to the one specified by the ``modified-type`` attribute, and it is a child of the modify-argument node. .. code-block:: xml If the new type is a class, the ``modified-type`` attribute must be set to the fully qualified name (including name of the package as well as the class name). define-ownership ^^^^^^^^^^^^^^^^ The define-ownership tag indicates that the function changes the ownership rules of the argument object. The ``class`` attribute specifies the class of function where to inject the ownership altering code. The ``owner`` attribute specifies the new ownership of the object. It accepts the following values: * target: the target language will assume full ownership of the object. The native resources will be deleted when the target language object is finalized. * c++: The native code assumes full ownership of the object. The target language object will not be garbage collected. * default: The object will get default ownership, depending on how it was created. .. code-block:: xml replace-value ^^^^^^^^^^^^^ The ``replace-value`` attribute lets you replace the return statement of a function with a fixed string. This attribute can only be used for the argument at ``index`` 0, which is always the function's return value. .. code-block:: xml parent ^^^^^^ The parent node lets you define the argument parent which will take ownership of argument and will destroy the C++ child object when the parent is destroyed. .. code-block:: xml In the ``index`` argument you must specify the parent argument. The action *add* creates a parent link between objects, while *remove* will undo the parentage relationship.