我已经部分解决了prev问题。将Ptr()转换为SourceCompletionProvider
现在我能够通过bindings-gobject
注册GObject
亚型(见hpase) 我可以用c'g_type_add_interface_static功能实现SourceCompletionProvider
(但仍没有尝试过)。
唯一的问题是将Ptr()
,由c'g_object_newv
返回到gtk2hs
数据类型SourceCompletionProvider
。我该怎么做?任何提示?
SourceCompletionProvider
的定义如下:
newtype SourceCompletionProvider = SourceCompletionProvider (ForeignPtr (SourceCompletionProvider))
是什么定义,意味着什么?为什么它是递归的?提供商是提供商ForeignPtr
- 对我来说看起来很奇怪。
谢谢。
解决方案:
makeNewGObject mkGObject $ castPtr <$> c'g_object_newv myObType 0 nullPtr
嗯...我想我需要添加终结器,对吧?我可以使用'p'g_object_unref'作为终结器,这足够吗? – Yuras
从查看[C接口文档](http://developer.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#g-object-unref)后我可以看出,你对了。 –
刚刚尝试过 - 像一个魅力。谢谢! – Yuras