[Haskell-cafe] advancePtr for ForeignPtr
Judah Jacobson
judah.jacobson at gmail.com
Mon Feb 23 12:02:32 EST 2009
On Mon, Feb 23, 2009 at 6:48 AM, Henning Thielemann
<lemming at henning-thielemann.de> wrote:
>
> On Mon, 23 Feb 2009, Felipe Lessa wrote:
>
>> On Mon, Feb 23, 2009 at 10:12 AM, Henning Thielemann
>> <lemming at henning-thielemann.de> wrote:
>>>
>>> Is still someone on haskell.org ?
>>
>> Sorry, I don't know :).
>
> I meant ffi at haskell.org
>
>>> Do I have to use 'touchForeignPtr' as finalizer of the subarray's
>>> ForeignPtr
>>> in order to assert that the superarray lives at least as long as the
>>> subarray?
>>
>> This may work, but seems like a fragile hack. Why not
>>
>>
>> data SubArray a = SA {-# UNPACK #-} !(ForeignPtr a)
>> {-# UNPACK #-} !Int
>
> This would work, but I want to convert from StorableVector to CArray and
> StorableVector has an offset parameter, which is missing in CArray.
I've used something like the following for that purpose:
advanceForeignPtr :: ForeignPtr a -> Int -> IO (ForeignPtr a)
advanceForeignPtr fp n = withForeignPtr fp $ \p ->
newForeignPtr_ (p `advancePtr` n)
-Judah
More information about the Haskell-Cafe
mailing list