如何在 GJS 中使用"out caller-allocates"?



我正在尝试通过具有以下签名的GData.ContactsContact.get_photo((检索联系人照片:

get_photo(
GDataContactsContact *self,
GDataContactsService *service,
gsize *length,                    (out caller-allocates)
gchar **content_type,             (out caller-allocates)
GCancellable *cancellable,
GError *error
)

但是,如果我只是为此将变量声明为"调用者分配"(例如。let length;( 或实例化一个新的长度G_TYPE,结果始终为

Gjs-Message: JS ERROR: Unsupported type guint64 for (out caller-allocates)

我只能找到一些类似问题的示例,它们都涉及注释错误:

似乎该方法注释不正确。它应该是(出调用者分配((数组长度=长度(。

这是一个我可以解决和/或提交错误的内省错误,还是我误解了 Javascript 中的"出调用者分配"用法?

您可以使用另一个函数来解决它,但似乎这个函数也没有正确注释。length参数应批注为返回值的长度。请在 GData 的 https://bugzilla.gnome.org 提交错误报告。

应该工作的方式是,输出参数(即使是那些标记为C代码的调用者分配的参数(不会被传入;一切都发生在引擎盖下。而且,长度参数仅在内部使用,以便设置它们引用的数组。因此,调用该函数的预期方法是:

let [photoBytes, contentType] = contact.get_photo(service, cancellable);

相关内容

  • 没有找到相关文章

最新更新