ANN: H98 FFI Addendum 1.0, Release Candidate 13
Alastair Reid
alastair at reid-consulting-uk.ltd.uk
Fri Oct 31 09:02:08 EST 2003
I think it's ok for the finalizer function to delete the environment object if
it wants isn't it?
This isn't always the right thing to do but I think it is in the common case
that there is a unique environment object for every finalized object.
In the other common case that there is a single environment object for a set
of objects (e.g., for all objects of the same 'type'), the finalizer might
decrement a reference count on the environment object.
Have I missed some subtlety?
--
Alastair Reid
> Regarding
>
> type FinalizerEnvPtr env a = FunPtr (Ptr env -> Ptr a -> IO ())
>
> newForeignPtrEnv :: FinalizerEnvPtr env a ->
> Ptr env -> Ptr a -> IO (ForeignPtr a)
> addForeignPtrFinalizerEnv :: FinalizerEnvPtr env a ->
> Ptr env -> ForeignPtr a -> IO ()
>
> Doesn't this mean that the env must be either static storage (gaining
> nothing) or dynamic storage that cannot be reclaimed (which brings us
> back to where we started)?
More information about the FFI
mailing list