修改参数#

conversion-rule#

conversion-rule节点允许你编写自定义代码,以在目标语言和C++之间转换指定的参数。它成为modify-argument节点的子节点。

<modify-argument index="2">
<!-- for the second argument of the function -->
<conversion-rule class="target | native">
    // the code
</conversion-rule>
</modify-argument>

class属性接受以下值中的一个,以定义转换方向为target-to-nativenative-to-target

  • native:定义转换方向为target-to-native

    它类似于现有的<target-to-native>元素。有关更多信息,请参阅转换规则标记

  • target:定义转换方向为native-to-target

    它类似于现有的<native-to-target>元素。有关更多信息,请参阅转换规则标记

此节点通常与replace-typeremove-argument节点一起使用。给定的代码将用于替代生成器的转换代码。

在代码中写入%N(其中N是数字),将插入第n个参数的名称。或者,使用%in和%out,它们将被转换输入和输出变量的名称替换,例如。

<conversion-rule class="native">
bool %out = (bool) %in;
</conversion-rule>

注意

您还可以使用conversion-rule节点来指定将用于替代生成器转换代码的转换代码,适用于给定类型的所有地方

remove-argument#

remove-argument节点从函数签名中删除指定的参数,并且是modify-argument节点的子节点。

<modify-argument>
    <remove-argument />
</modify-argument>

rename to#

使用 rename to 节点可以将参数重命名,并在生成的代码中使用这个新的名称,它是 modify-argument 节点的子节点。

<modify-argument>
    <rename to='...' />
</modify-argument>

警告

此标签已弃用,请使用 modify-argument 标签的 rename 属性代替。

remove-default-expression#

使用 remove-default-expression 节点将禁用给定的参数使用默认表达式,它是 modify-argument 节点的子节点。

<modify-argument...>
    <remove-default-expression />
</modify-argument>

replace-default-expression#

使用 replace-default-expression 节点可以将指定的参数替换为 with 属性指定的表达式,它是 modify-argument 节点的子节点。

<modify-argument>
    <replace-default-expression with="..." />
</modify-argument>

replace-type#

使用 replace-type 节点可以将给定参数的类型替换为 modified-type 属性指定的类型,它是 modify-argument 节点的子节点。

<modify-argument>
    <replace-type modified-type="..." />
</modify-argument>

如果新类型是一个类,则必须将 modified-type 属性设置为完全限定的名称(包括包名和类名)。

define-ownership#

define-ownership 标签表示函数更改了参数对象的拥有权规则,它是 modify-argument 节点的子节点。 class 属性指定了要注入拥有权改变代码的函数类(见 生成代码术语)。 owner 属性指定了对象的新拥有权。它接受以下值

  • target: 目标语言将假设对对象具有完全所有权。

    当目标语言对象最终结束时,将删除本地资源。

  • c++: 本地代码假设对对象具有完全所有权。目标

    语言对象不会进行垃圾回收。

  • default: 对象将获得默认所有权,具体取决于其

    是如何创建的。

<modify-argument>
      <define-ownership class="target | native"
                        owner="target | c++ | default" />
</modify-argument>

reference-count#

《引用计数》标签规定目标语言引用计数系统(如果有的话)应该如何处理参数,它还指示被修改的功能所属的类与参数之间的关系。它是《修改参数》节点的子节点。例如,在一个模型/视图关系中,如果视图将模型作为参数传递给一个`setModel`方法,应该递增模型的引用计数,因为模型应该被保持与视图中存活的时间一样长。请记住,我们的假设视图不能成为模型的父节点,因为该模型还可能被其他视图使用。`action`属性指定在修改的方法调用时对参数引用计数的操作。它可以接受以下值

  • 添加:递增参数引用计数。

  • 添加所有:递增集合中每个项目的引用计数。

  • 删除:递减参数引用计数。

  • 设置:将参数赋值给包含引用的变量。

  • 忽略:不对参数引用计数执行任何操作
    (听起来毫无价值,但可以在某些情况下使用

    默认情况下必须递增引用计数的情况中)。

<modify-argument>
      <reference-count action="add|add-all|remove|set|ignore" variable-name="..." />
</modify-argument>

变量名属性指定用于持有引用的变量的名称。

替换值#

《替换值》属性允许您将函数的返回语句替换为固定字符串。此属性只能用于索引为0的参数,它始终是函数的返回值。

<modify-argument index="0" replace-value="this"/>

父对象#

《父对象》节点允许您定义参数父对象,它将获取参数的所有权,在父对象被销毁时销毁C++子对象(请参阅《父子关系》)。它是《修改参数》节点的子节点。

<modify-argument index="1">
      <parent index="this" action="add | remove" />
</modify-argument>

在《索引》参数中,您必须指定父参数。操作`添加`将创建对象之间的父链接,而操作`删除`将撤销父子关系。