On Sun, 28 Aug 2016, Alexey Khudyakov wrote:

On 27 August 2016 at 13:23, Henning Thielemann
<lemm...@henning-thielemann.de> wrote:

I want to write a Haskell interface to a C library that provides two data
structures A and B, where B is contained in A. That is, if A is freed, then
B is automatically freed, too.

I don't quite understand. Do A and B live in the same buffer and problem in
keeping buffer alive as long as there're pointers to A or B. If so
it's easy problem
and vector solves exactly this problem for storable vectors. Check
implementation
of basicUnsafeSlice. Idea is to share finalizer between ForeignPtr

Sharing finalizer between ForeignPtr A and ForeignPtr B might indeed be a solution. It would require dependence on the ghc package (and thus GHC), though.

If they live in different buffers and B should not be collected as
long as A lives...

This would be true in another situation, where I create a finalizer by the LLVM-JIT and need to finalize the finalizer's code if it is no longer needed.
  https://ghc.haskell.org/trac/ghc/ticket/12547
_______________________________________________
FFI mailing list
FFI@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ffi

Reply via email to