控制Vapi文件中的ref类型

时间:2016-06-29 19:28:53

标签: vala vapi

我正在尝试编写Vapi file for MessagePack并遇到一些问题,第一个问题是由于其中一个参数的引用类型,生成的msgpack_object_print不正确。头文件需要

void msgpack_object_print(FILE* out, msgpack_object o);

我的Vapi文件包含

[CCode (instance_pos = 1.1)]
public void print (Posix.FILE out);

生成C输出

msgpack_object_print (_tmp13_, &obj);

其中obj的类型为msgpack_object *。这会产生错误

examples/simple.c:173:34: error: incompatible type for argument 2 of ‘msgpack_object_print’

如果我从生成的C中删除&,它就会消失。所以我想知道我的Vapi应该包含什么才能产生正确的输出?

2 个答案:

答案 0 :(得分:3)

您可以将msgpack_object课程指定为[SimpleType],并按价值而非参考方式复制。

答案 1 :(得分:2)

如果您想通过使用和测试来回馈,我已为MessagePack编写了部分VAPI。

https://github.com/valum-framework/vala-extra-vapis/blob/msgpack/msgpack.vapi

就像已经说过的那样,你需要在类上使用[SimpleType]注释来让你的类型按值传递。

编辑:只需添加绑定,将它们保存在nemequ/vala-extra-vapis存储库中是一件好事。