[Haskell-cafe] managing embedded structs
Henning Thielemann
lemming at henning-thielemann.de
Sun Aug 28 18:17:27 UTC 2016
On Sun, 28 Aug 2016, Alexey Khudyakov wrote:
> On 27 August 2016 at 13:23, Henning Thielemann
> <lemming at 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
More information about the Haskell-Cafe
mailing list