【问题标题】:Controlling the ref type in a Vapi file控制 Vapi 文件中的 ref 类型
【发布时间】:2016-06-29 19:28:53
【问题描述】:

我正在尝试编写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 应该包含什么才能产生正确的输出?

【问题讨论】:

    标签: vala vapi


    【解决方案1】:

    您可以将msgpack_object 类指定为[SimpleType],它将按值而不是按引用进行复制。

    【讨论】:

      【解决方案2】:

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

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

      如前所述,您需要在类上使用[SimpleType] 注释以使您的类型按值传递。

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

      【讨论】:

      • 嗯,我在开始之前在 github 上搜索了那个,结果是空的。如果我看到它,我绝对不会开始。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多