From 40906d02b52109f09a691444fc20903cffb19279 Mon Sep 17 00:00:00 2001 From: sof Date: Mon, 29 Jun 1998 16:33:11 +0000 Subject: [PATCH] [project @ 1998-06-29 16:33:11 by sof] Added indexAddrOffAddr --- ghc/lib/std/PrelAddr.lhs | 62 +++++++++------------------------------------- 1 file changed, 12 insertions(+), 50 deletions(-) diff --git a/ghc/lib/std/PrelAddr.lhs b/ghc/lib/std/PrelAddr.lhs index 6543bfb..d7febe7 100644 --- a/ghc/lib/std/PrelAddr.lhs +++ b/ghc/lib/std/PrelAddr.lhs @@ -1,5 +1,5 @@ % -% (c) The AQUA Project, Glasgow University, 1994-1996 +% (c) The AQUA Project, Glasgow University, 1994-1998 % \section[PrelAddr]{Module @PrelAddr@} @@ -8,9 +8,11 @@ {-# OPTIONS -fno-implicit-prelude #-} module PrelAddr ( - Addr(..), - nullAddr, -- :: Addr - plusAddr, -- :: Addr -> Int -> Addr + Addr(..) + , nullAddr -- :: Addr + , plusAddr -- :: Addr -> Int -> Addr + , indexAddrOffAddr -- :: Addr -> Int -> Addr + ) where import PrelGHC @@ -33,52 +35,12 @@ plusAddr (A# addr) (I# off) = A# (int2Addr# (addr2Int# addr +# off)) instance CCallable Addr instance CCallable Addr# instance CReturnable Addr -\end{code} - -ToDo: --- read value out of _immutable_ memory - indexCharOffAddr :: Addr -> Int -> Char - indexIntOffAddr :: Addr -> Int -> Int -- should we drop this? - indexAddrOffAddr :: Addr -> Int -> Addr - indexFloatOffAddr :: Addr -> Int -> Float - indexDoubleOffAddr :: Addr -> Int -> Double - indexWord8OffAddr :: Addr -> Int -> Word8 - indexWord16OffAddr :: Addr -> Int -> Word16 - indexWord32OffAddr :: Addr -> Int -> Word32 - indexWord64OffAddr :: Addr -> Int -> Word64 - indexInt8OffAddr :: Addr -> Int -> Int8 - indexInt16OffAddr :: Addr -> Int -> Int16 - indexInt32OffAddr :: Addr -> Int -> Int32 - indexInt64OffAddr :: Addr -> Int -> Int64 +indexAddrOffAddr :: Addr -> Int -> Addr +indexAddrOffAddr (A# addr#) n + = case n of { I# n# -> + case indexAddrOffAddr# addr# n# of { r# -> + (A# r#)}} - -- read value out of mutable memory - readCharOffAddr :: Addr -> Int -> IO Char - readIntOffAddr :: Addr -> Int -> IO Int -- should we drop this? - readAddrOffAddr :: Addr -> Int -> IO Addr - readFloatOffAddr :: Addr -> Int -> IO Float - readDoubleOffAddr :: Addr -> Int -> IO Double - readWord8OffAddr :: Addr -> Int -> IO Word8 - readWord16OffAddr :: Addr -> Int -> IO Word16 - readWord32OffAddr :: Addr -> Int -> IO Word32 - readWord64OffAddr :: Addr -> Int -> IO Word64 - readInt8OffAddr :: Addr -> Int -> IO Int8 - readInt16OffAddr :: Addr -> Int -> IO Int16 - readInt32OffAddr :: Addr -> Int -> IO Int32 - readInt64OffAddr :: Addr -> Int -> IO Int64 - - -- write value into mutable memory - writeCharOffAddr :: Addr -> Int -> Char -> IO () - writeIntOffAddr :: Addr -> Int -> Int -> IO () -- should we drop this? - writeAddrOffAddr :: Addr -> Int -> Addr -> IO () - writeFloatOffAddr :: Addr -> Int -> Float -> IO () - writeDoubleOffAddr :: Addr -> Int -> Double -> IO () - writeWord8OffAddr :: Addr -> Int -> Word8 -> IO () - writeWord16OffAddr :: Addr -> Int -> Word16 -> IO () - writeWord32OffAddr :: Addr -> Int -> Word32 -> IO () - writeWord64OffAddr :: Addr -> Int -> Word64 -> IO () - writeInt8OffAddr :: Addr -> Int -> Int8 -> IO () - writeInt16OffAddr :: Addr -> Int -> Int16 -> IO () - writeInt32OffAddr :: Addr -> Int -> Int32 -> IO () - writeInt64OffAddr :: Addr -> Int -> Int64 -> IO () +\end{code} -- 1.7.10.4