On Tue, Feb 07, 2012 at 06:26:48PM -0800, John Meacham wrote: > > Hi, from my reading, it looks like 'capi' means from a logical perspective, > > "Don't assume the object is addressible, but rather that the standard c syntax > for calling this routine will expand into correct code when compiled with the > stated headers" > > So, it may be implemented by say creating a stub .c file that includes the > headers and creates a wrapper around each one or when compiling via C, > actually including the given headers and the function calls in the code.
That sounds right. It basically means you don't have to write the C stubs yourself, which is nice because (a) doing so is a pain, and (b) when the foreign import is inside 2 or 3 CPP conditionals it's even more of a pain to replicate them correctly in the C stub. Unfortunately, there are cases where C doesn't get all the type information it needs, e.g.: http://hackage.haskell.org/trac/ghc/ticket/2979#comment:14 but I'm not sure what the best fix is. > I ask because jhc needs such a feature (very hacky method used now, > the rts knows some problematic functions and includes hacky wrappers > and #defines.) and I'll make it behave just like the ghc one when possible. Great! Thanks Ian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe