2 % (c) The AQUA Project, Glasgow University, 1994-1996
5 \section[PrelAddr]{Module @PrelAddr@}
8 {-# OPTIONS -fno-implicit-prelude #-}
13 plusAddr, -- :: Addr -> Int -> Addr
23 data Addr = A# Addr# deriving (Eq, Ord)
25 instance Show Addr where
26 showsPrec p (A# a) = showsPrec p (I# (addr2Int# a))
28 nullAddr = ``NULL'' :: Addr
30 plusAddr :: Addr -> Int -> Addr
31 plusAddr (A# addr) (I# off) = A# (int2Addr# (addr2Int# addr +# off))
33 instance CCallable Addr
34 instance CCallable Addr#
35 instance CReturnable Addr
40 -- read value out of _immutable_ memory
41 indexCharOffAddr :: Addr -> Int -> Char
42 indexIntOffAddr :: Addr -> Int -> Int -- should we drop this?
43 indexAddrOffAddr :: Addr -> Int -> Addr
44 indexFloatOffAddr :: Addr -> Int -> Float
45 indexDoubleOffAddr :: Addr -> Int -> Double
46 indexWord8OffAddr :: Addr -> Int -> Word8
47 indexWord16OffAddr :: Addr -> Int -> Word16
48 indexWord32OffAddr :: Addr -> Int -> Word32
49 indexWord64OffAddr :: Addr -> Int -> Word64
50 indexInt8OffAddr :: Addr -> Int -> Int8
51 indexInt16OffAddr :: Addr -> Int -> Int16
52 indexInt32OffAddr :: Addr -> Int -> Int32
53 indexInt64OffAddr :: Addr -> Int -> Int64
55 -- read value out of mutable memory
56 readCharOffAddr :: Addr -> Int -> IO Char
57 readIntOffAddr :: Addr -> Int -> IO Int -- should we drop this?
58 readAddrOffAddr :: Addr -> Int -> IO Addr
59 readFloatOffAddr :: Addr -> Int -> IO Float
60 readDoubleOffAddr :: Addr -> Int -> IO Double
61 readWord8OffAddr :: Addr -> Int -> IO Word8
62 readWord16OffAddr :: Addr -> Int -> IO Word16
63 readWord32OffAddr :: Addr -> Int -> IO Word32
64 readWord64OffAddr :: Addr -> Int -> IO Word64
65 readInt8OffAddr :: Addr -> Int -> IO Int8
66 readInt16OffAddr :: Addr -> Int -> IO Int16
67 readInt32OffAddr :: Addr -> Int -> IO Int32
68 readInt64OffAddr :: Addr -> Int -> IO Int64
70 -- write value into mutable memory
71 writeCharOffAddr :: Addr -> Int -> Char -> IO ()
72 writeIntOffAddr :: Addr -> Int -> Int -> IO () -- should we drop this?
73 writeAddrOffAddr :: Addr -> Int -> Addr -> IO ()
74 writeFloatOffAddr :: Addr -> Int -> Float -> IO ()
75 writeDoubleOffAddr :: Addr -> Int -> Double -> IO ()
76 writeWord8OffAddr :: Addr -> Int -> Word8 -> IO ()
77 writeWord16OffAddr :: Addr -> Int -> Word16 -> IO ()
78 writeWord32OffAddr :: Addr -> Int -> Word32 -> IO ()
79 writeWord64OffAddr :: Addr -> Int -> Word64 -> IO ()
80 writeInt8OffAddr :: Addr -> Int -> Int8 -> IO ()
81 writeInt16OffAddr :: Addr -> Int -> Int16 -> IO ()
82 writeInt32OffAddr :: Addr -> Int -> Int32 -> IO ()
83 writeInt64OffAddr :: Addr -> Int -> Int64 -> IO ()