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