diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-07-13 13:25:15 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-07-13 13:25:15 +0000 |
commit | 5e2ec13c1c903098af572dd6239dc7e4cad24833 (patch) | |
tree | a17e90a86ca6f8a48221416e40fe1ab2a6446554 /libraries/base/Foreign | |
parent | 2f788c9bb60cc347054affbe675b3f4d233c95a5 (diff) | |
download | haskell-5e2ec13c1c903098af572dd6239dc7e4cad24833.tar.gz |
add cast{C,U}CharToChar and castCharTo{C,U}Char, from Haskell 2010
Diffstat (limited to 'libraries/base/Foreign')
-rw-r--r-- | libraries/base/Foreign/C/String.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libraries/base/Foreign/C/String.hs b/libraries/base/Foreign/C/String.hs index 2fb14d0ccf..680c81a167 100644 --- a/libraries/base/Foreign/C/String.hs +++ b/libraries/base/Foreign/C/String.hs @@ -59,6 +59,11 @@ module Foreign.C.String ( -- representation of strings in C castCharToCChar, -- :: Char -> CChar castCCharToChar, -- :: CChar -> Char + castCharToCUChar, -- :: Char -> CUChar + castCUCharToChar, -- :: CUChar -> Char + castCharToCSChar, -- :: Char -> CSChar + castCSCharToChar, -- :: CSChar -> Char + peekCAString, -- :: CString -> IO String peekCAStringLen, -- :: CStringLen -> IO String newCAString, -- :: String -> IO CString @@ -199,6 +204,26 @@ castCCharToChar ch = unsafeChr (fromIntegral (fromIntegral ch :: Word8)) castCharToCChar :: Char -> CChar castCharToCChar ch = fromIntegral (ord ch) +-- | Convert a C @unsigned char@, representing a Latin-1 character, to +-- the corresponding Haskell character. +castCUCharToChar :: CUChar -> Char +castCUCharToChar ch = unsafeChr (fromIntegral (fromIntegral ch :: Word8)) + +-- | Convert a Haskell character to a C @unsigned char@. +-- This function is only safe on the first 256 characters. +castCharToCUChar :: Char -> CUChar +castCharToCUChar ch = fromIntegral (ord ch) + +-- | Convert a C @signed char@, representing a Latin-1 character, to the +-- corresponding Haskell character. +castCSCharToChar :: CSChar -> Char +castCSCharToChar ch = unsafeChr (fromIntegral (fromIntegral ch :: Word8)) + +-- | Convert a Haskell character to a C @signed char@. +-- This function is only safe on the first 256 characters. +castCharToCSChar :: Char -> CSChar +castCharToCSChar ch = fromIntegral (ord ch) + -- | Marshal a NUL terminated C string into a Haskell string. -- peekCAString :: CString -> IO String |