Skip to content

more specific types in the generated *_stub.h files

Having a declaration like:

foreign export ccall "respond" respond :: CWString -> IO CWString

all the types in the corresponding _stub.h are HsPtr.

Wouldn't it be possible to write more specific types reflecting my expectations, i.e., wchar_t *?

It would be nice in order to signal automatically to the C code which uses the Haskell functions that the types of the Haskell functions changed. In simple cases, one could simply include the stub.h, and get automatically an error if the C code doesn't match the new types.

I've tried using a CTYPE pragma (cf. #2979 (closed) , #8222 (closed) , and https://mail.haskell.org/pipermail/haskell/2012-February/023155.html ) on a newtype to get such results:

newtype {-# CTYPE "wchar_t *" #-} CWString' = CWString' CWString
foreign export ccall "respond" respond :: CWString'  -> IO CWString

but that still produces HsPtr. (Well, I see, the CTYPE pragma was mostly intended for imports rather than exports.)

Edited by imz
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information