X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FPack.lhs;h=47c10ec9a1c9bf0d915e82d0b3eac989a2be13f5;hb=87c689948cdbf75570ec2c6b00b982ddd5c67573;hp=17d371ef2422bb21d882103c40fe7e1adc78fc57;hpb=aaf764b3ad8b1816d68b5f27299eac125f08e1a5;p=ghc-base.git diff --git a/GHC/Pack.lhs b/GHC/Pack.lhs index 17d371e..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 @@ -19,35 +20,35 @@ -- ----------------------------------------------------------------------------- +-- #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 {-# SOURCE #-} 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 @@ -76,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