#define COMPILING_FAST_STRING
#include "HsVersions.h"
import Foreign
-import Data.Char ( ord, chr, isDigit, digitToInt, isHexDigit )
-import Numeric ( showHex )
-
+import Data.Char ( ord, chr, isDigit, digitToInt, intToDigit,
+ isHexDigit )
+import Numeric ( showIntAtBase )
import Data.Bits
import GHC.Ptr ( Ptr(..) )
import GHC.Base
unPtr (Ptr a) = a
+utf8EncodeChar :: Char -> Ptr Word8 -> IO (Ptr Word8)
utf8EncodeChar c ptr =
let x = ord c in
case () of
-- eg. strings of unicode characters come out as 'z1234Uz5678U', we
-- could remove the 'U' in the middle (the 'z' works as a separator).
+ showHex = showIntAtBase 16 intToDigit
+ -- needed because prior to GHC 6.2, Numeric.showHex added a "0x" prefix
+
zDecodeString :: EncodedString -> UserString
zDecodeString [] = []
zDecodeString ('Z' : d : rest)