I\'ve solved the prev question partially.
Right now I\'m able to register GObject
subtype via bindings-gobject
(see hpase)
I can implement
The outer 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.
You can convert a Ptr ()
to ForeignPtr ()
using newForeignPtr_ and then cast it to ForeignPtr SourceCompletionProvider
with castForeignPtr.
edit: After looking at this a bit more, I think that to make this work you'll need to first convert your Ptr
to GObject
with the method outlined above and then use unsafeCastGObject
. Not tested, though.