X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Futils%2FEncoding.hs;h=347fd8d481b83c433a36c995ba00b98d3084c233;hp=152bf3c60eb0d56ba74dce577c28e33ed6e6db20;hb=7fc749a43b4b6b85d234fa95d4928648259584f4;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/compiler/utils/Encoding.hs b/compiler/utils/Encoding.hs index 152bf3c..347fd8d 100644 --- a/compiler/utils/Encoding.hs +++ b/compiler/utils/Encoding.hs @@ -6,6 +6,13 @@ -- -- ----------------------------------------------------------------------------- +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module Encoding ( -- * UTF-8 utf8DecodeChar#, @@ -26,9 +33,9 @@ module Encoding ( #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 @@ -138,6 +145,7 @@ countUTF8Chars ptr bytes = go ptr 0 unPtr (Ptr a) = a +utf8EncodeChar :: Char -> Ptr Word8 -> IO (Ptr Word8) utf8EncodeChar c ptr = let x = ord c in case () of @@ -281,6 +289,9 @@ encode_ch c = 'z' : if isDigit (head hex_str) then hex_str -- 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)