X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FPack.lhs;h=47c10ec9a1c9bf0d915e82d0b3eac989a2be13f5;hb=0001f92b790079cec9df03c2229d6f39268f60af;hp=54899688460eefa0fd562c991014ee5e5830b5e2;hpb=b7d05c7e6906102bbc4ffe5d33ec555c4e46c2dc;p=ghc-base.git diff --git a/GHC/Pack.lhs b/GHC/Pack.lhs index 5489968..47c10ec 100644 --- a/GHC/Pack.lhs +++ b/GHC/Pack.lhs @@ -1,5 +1,6 @@ \begin{code} -{-# OPTIONS_GHC -fno-implicit-prelude #-} +{-# OPTIONS_GHC -XNoImplicitPrelude #-} +{-# OPTIONS_HADDOCK hide #-} ----------------------------------------------------------------------------- -- | -- Module : GHC.Pack @@ -22,33 +23,32 @@ -- #hide module GHC.Pack ( - -- (**) - emitted by compiler. + -- (**) - emitted by compiler. - packCString#, -- :: [Char] -> ByteArray# (**) - unpackCString, - unpackCString#, -- :: Addr# -> [Char] (**) - unpackNBytes#, -- :: Addr# -> Int# -> [Char] (**) - unpackFoldrCString#, -- (**) - unpackAppendCString#, -- (**) + packCString#, -- :: [Char] -> ByteArray# (**) + unpackCString, + unpackCString#, -- :: Addr# -> [Char] (**) + unpackNBytes#, -- :: Addr# -> Int# -> [Char] (**) + unpackFoldrCString#, -- (**) + unpackAppendCString#, -- (**) ) - where + where import GHC.Base -import GHC.Err ( error ) import GHC.List ( length ) import GHC.ST import GHC.Num import GHC.Ptr -data ByteArray ix = ByteArray ix ix ByteArray# +data ByteArray ix = ByteArray ix ix ByteArray# data MutableByteArray s ix = MutableByteArray ix ix (MutableByteArray# s) unpackCString :: Ptr a -> [Char] unpackCString a@(Ptr addr) | a == nullPtr = [] - | otherwise = unpackCString# addr + | otherwise = unpackCString# addr -packCString# :: [Char] -> ByteArray# +packCString# :: [Char] -> ByteArray# packCString# str = case (packString str) of { ByteArray _ _ bytes -> bytes } packString :: [Char] -> ByteArray Int @@ -77,23 +77,23 @@ packNBytesST (I# length#) str = return () fill_in arr_in# idx (C# c : cs) = - write_ps_array arr_in# idx c >> + write_ps_array arr_in# idx c >> fill_in arr_in# (idx +# 1#) cs -- (Very :-) ``Specialised'' versions of some CharArray things... -new_ps_array :: Int# -> ST s (MutableByteArray s Int) -write_ps_array :: MutableByteArray s Int -> Int# -> Char# -> ST s () +new_ps_array :: Int# -> ST s (MutableByteArray s Int) +write_ps_array :: MutableByteArray s Int -> Int# -> Char# -> ST s () freeze_ps_array :: MutableByteArray s Int -> Int# -> ST s (ByteArray Int) new_ps_array size = ST $ \ s -> - case (newByteArray# size s) of { (# s2#, barr# #) -> + case (newByteArray# size s) of { (# s2#, barr# #) -> (# s2#, MutableByteArray bot bot barr# #) } where bot = error "new_ps_array" write_ps_array (MutableByteArray _ _ barr#) n ch = ST $ \ s# -> - case writeCharArray# barr# n ch s# of { s2# -> + case writeCharArray# barr# n ch s# of { s2# -> (# s2#, () #) } -- same as unsafeFreezeByteArray