X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FPrelPack.lhs;h=65fed7d97e7d86d8aae7f9656b44c8bbfe4bdb8e;hb=225d251337438e2f7870f0ec2781b1c616ef7462;hp=4788126293269ac55825da410617575ace1c2ace;hpb=ce6e38dc12b5feae2eb43e94d833646a9c921cda;p=ghc-hetmet.git diff --git a/ghc/lib/std/PrelPack.lhs b/ghc/lib/std/PrelPack.lhs index 4788126..65fed7d 100644 --- a/ghc/lib/std/PrelPack.lhs +++ b/ghc/lib/std/PrelPack.lhs @@ -1,5 +1,5 @@ % ------------------------------------------------------------------------------ -% $Id: PrelPack.lhs,v 1.13 2000/06/30 13:39:36 simonmar Exp $ +% $Id: PrelPack.lhs,v 1.16 2001/01/11 17:25:57 simonmar Exp $ % % (c) The University of Glasgow, 1997-2000 % @@ -25,11 +25,12 @@ module PrelPack packStringST, -- :: [Char] -> ST s (ByteArray Int) packNBytesST, -- :: Int -> [Char] -> ST s (ByteArray Int) - unpackCString, -- :: Addr -> [Char] - unpackCStringST, -- :: Addr -> ST s [Char] - unpackNBytes, -- :: Addr -> Int -> [Char] - unpackNBytesST, -- :: Addr -> Int -> ST s [Char] - unpackNBytesAccST, -- :: Addr -> Int -> [Char] -> ST s [Char] + unpackCString, -- :: Ptr a -> [Char] + unpackCStringST, -- :: Ptr a -> ST s [Char] + unpackNBytes, -- :: Ptr a -> Int -> [Char] + unpackNBytesST, -- :: Ptr a -> Int -> ST s [Char] + unpackNBytesAccST, -- :: Ptr a -> Int -> [Char] -> ST s [Char] + unpackNBytesAccST#,-- :: Ptr a -> Int -> [Char] -> ST s [Char] unpackCString#, -- :: Addr# -> [Char] ** unpackNBytes#, -- :: Addr# -> Int# -> [Char] ** unpackNBytesST#, -- :: Addr# -> Int# -> ST s [Char] @@ -55,15 +56,14 @@ import {-# SOURCE #-} PrelErr ( error ) import PrelList ( length ) import PrelST import PrelNum -import PrelArr import PrelByteArr -import PrelAddr +import PrelPtr \end{code} %********************************************************* %* * -\subsection{Unpacking Addrs} +\subsection{Unpacking Ptrs} %* * %********************************************************* @@ -71,17 +71,17 @@ Primitives for converting Addrs pointing to external sequence of bytes into a list of @Char@s: \begin{code} -unpackCString :: Addr -> [Char] -unpackCString a@(A# addr) - | a == nullAddr = [] +unpackCString :: Ptr a -> [Char] +unpackCString a@(Ptr addr) + | a == nullPtr = [] | otherwise = unpackCString# addr -unpackNBytes :: Addr -> Int -> [Char] -unpackNBytes (A# addr) (I# l) = unpackNBytes# addr l +unpackNBytes :: Ptr a -> Int -> [Char] +unpackNBytes (Ptr addr) (I# l) = unpackNBytes# addr l -unpackCStringST :: Addr{- ptr. to NUL terminated string-} -> ST s [Char] -unpackCStringST a@(A# addr) - | a == nullAddr = return [] +unpackCStringST :: Ptr a{- ptr. to NUL terminated string-} -> ST s [Char] +unpackCStringST a@(Ptr addr) + | a == nullPtr = return [] | otherwise = unpack 0# where unpack nh @@ -92,11 +92,11 @@ unpackCStringST a@(A# addr) where ch = indexCharOffAddr# addr nh -unpackNBytesST :: Addr -> Int -> ST s [Char] -unpackNBytesST (A# addr) (I# l) = unpackNBytesAccST# addr l [] +unpackNBytesST :: Ptr a -> Int -> ST s [Char] +unpackNBytesST (Ptr addr) (I# l) = unpackNBytesAccST# addr l [] -unpackNBytesAccST :: Addr -> Int -> [Char] -> ST s [Char] -unpackNBytesAccST (A# addr) (I# l) rest = unpackNBytesAccST# addr l rest +unpackNBytesAccST :: Ptr a -> Int -> [Char] -> ST s [Char] +unpackNBytesAccST (Ptr addr) (I# l) rest = unpackNBytesAccST# addr l rest unpackNBytesST# :: Addr# -> Int# -> ST s [Char] unpackNBytesST# addr# l# = unpackNBytesAccST# addr# l# [] @@ -213,7 +213,7 @@ 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 (newCharArray# size s) of { (# s2#, barr# #) -> + case (newByteArray# size s) of { (# s2#, barr# #) -> (# s2#, MutableByteArray bot bot barr# #) } where bot = error "new_ps_array"