修改参数#
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-native
或native-to-target
。
native
:定义转换方向为target-to-native
。它类似于现有的
<target-to-native>
元素。有关更多信息,请参阅转换规则标记。
target
:定义转换方向为native-to-target
。它类似于现有的
<native-to-target>
元素。有关更多信息,请参阅转换规则标记。
此节点通常与replace-type和remove-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>
在《索引》参数中,您必须指定父参数。操作`添加`将创建对象之间的父链接,而操作`删除`将撤销父子关系。