Let's get this finished
Simon Marlow
simonmar at microsoft.com
Wed Jan 10 07:45:37 EST 2001
> Granted. And remember we already have a (quite ugly) module CString!
> So here is a new proposal:
>
> * Deprecate the old definitions in CString and add
>
> type CString = Ptr CChar
> mallocCString :: String -> IO CString
> peekCString :: CString -> IO String
> pokeCString :: CString -> String -> IO ()
> withCString :: String -> (CString -> IO a) -> IO a
> newCString :: String -> IO CString
>
> * Add a new module CStringLen with
>
> type CStringLen = (CString, Int)
> mallocCStringLen :: String -> IO CStringLen
> peekCStringLen :: CStringLen -> IO String
> pokeCStringLen :: CStringLen -> String -> IO ()
> withCStringLen :: String -> (CStringLen -> IO a) -> IO a
> newCStringLen :: String -> IO CStringLen
Ok. I'm still using the existing CString, but it can be renamed to
something else. I've been using "UnsafeCString" since these ByteArray
CStrings can only be passed to unsafe foreign functions. For now, let's
just rename CString to UnsafeCString and change all the uses.
Cheers,
Simon
More information about the FFI
mailing list