将Ptr()转换为SourceCompletionProvider [英] Convert Ptr () to SourceCompletionProvider
问题描述
我已经部分解决了上一个问题。
现在我可以通过 唯一的问题是将 什么这个定义是否意味着?为什么它是递归的? Provider是 谢谢。 解决方案: 可以将 edit:在看了这些之后,我认为要做到这一点,您需要先将 I've solved the prev question partially. Right now I'm able to register The only issue is to convert What does this definition means? Why it is recursive? Provider is a Thanks. Solution:
The outer You can convert a edit: After looking at this a bit more, I think that to make this work you'll need to first convert your 这篇关于将Ptr()转换为SourceCompletionProvider的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! bindings-gobject
注册 GObject
子类型(参见< hbase )
我可以实现 SourceCompletionProvider
使用 a href =http://hackage.haskell.org/packages/archive/bindings-gobject/0.3/doc/html/Bindings-GObject-TypeInformation.html#v:c-39-g_type_add_interface_static =nofollow noreferrer > c'g_type_add_interface_static 函数(但尚未尝试过)。
Ptr() code> c'g_object_newv ,返回到
gtk2hs
数据类型 SourceCompletionProvider
。我该怎么做?任何提示?
SourceCompletionProvider
定义如下:
newtype SourceCompletionProvider = SourceCompletionProvider(ForeignPtr(SourceCompletionProvider))
ForeignPtr
提供者 - 看起来很奇怪。
makeNewGObject mkGObject $ castPtr< $> c'g_object_newv myObType 0 nullPtr
SourceCompletionProvider
只是一个标记,用于区分这个外部指针和其他类型的指针。如果您查看定义 ptr a
,它是 data Ptr a = Ptr Addr# -
a
是一个幻像类型,不会出现在右侧,因此定义实际上不是递归的。
Ptr()
到 ForeignPtr()
使用 newForeignPtr _
,然后将它转换为 ForeignPtr SourceCompletionProvider
与 castForeignPtr
。
Ptr
转换为 GObject
w ith上述方法,然后使用 unsafeCastGObject
。不过未经测试。 GObject
subtype via bindings-gobject
(see hpase)
I can implement SourceCompletionProvider
using c'g_type_add_interface_static function (but didn't tried yet).Ptr ()
, returned by c'g_object_newv
, to gtk2hs
data type SourceCompletionProvider
. How can I do it? Any hints?SourceCompletionProvider
is defined like:newtype SourceCompletionProvider = SourceCompletionProvider (ForeignPtr (SourceCompletionProvider))
ForeignPtr
to provider -- looks strange for me.makeNewGObject mkGObject $ castPtr <$> c'g_object_newv myObType 0 nullPtr
SourceCompletionProvider
is required since this is a newtype, and the inner SourceCompletionProvider
is just a marker to distinguish this foreign pointer from pointers to other types. If you look at the definition of Ptr a
, it's data Ptr a = Ptr Addr#
- a
is a phantom type that doesn't appear on the right-hand side, so the definition is not actually recursive.Ptr ()
to ForeignPtr ()
using newForeignPtr_
and then cast it to ForeignPtr SourceCompletionProvider
with castForeignPtr
.Ptr
to GObject
with the method outlined above and then use unsafeCastGObject
. Not tested, though.