MicroHs-0.8: lib/Foreign/C/String.hs
module Foreign.C.String(
CChar, CString,
newCAString, withCAString,
peekCAString,
) where
import Primitives
import Data.Char_Type
import Foreign.Marshal.Alloc
type CChar = Char
type CString = Ptr CChar
newCAString :: String -> IO CString
newCAString = primNewCAString
withCAString :: forall a . String -> (CString -> IO a) -> IO a
withCAString s io =
newCAString s `primBind` \ cs ->
io cs `primBind` \ a ->
free cs `primThen`
primReturn a
peekCAString :: CString -> IO String
peekCAString = primPeekCAString