On Wed, 2006-03-15 at 17:01 +0000, Brian Hulley wrote:
> Simon Marlow wrote:

> > This is the way it used to be in GHC before the FFI.  In the FFI we
> > moved to withForeignPtr instead.  IIRC, the motivation was something
> > along these lines:
> >
> >  - allowing ForeignPtr to be passed directly to a foreign function
> >    implies some magic that happens at the point of the foreign call
> >    to convert the ForeignPtr to a Ptr.
> >
> >  - there also has to be some magic to ensure that the ForeignPtr
> >    couldn't be finalized until the call returns.  This amounted to
> >    adding a touch# primitive to keep the ForeignPtr alive over the
> >    call. So internally the compiler was doing something like
> >    withForeignPtr anyway.  This behaviour is quite hard to explain in
> >    the spec, withForeignPtr is much simpler.
> 
> 
> The above two things were what I was expecting the compiler to do for me 
> instead of me having to manually write a wrapper function in Haskell using 
> withForeignPtr for each wrapper function for each foreign function...

This is exactly the sort of thing that FFI tools automate. Indeed they
can do this and much more.

Duncan

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to