[project @ 1999-01-19 09:51:21 by sof]
[ghc-hetmet.git] / ghc / docs / libraries / Addr.sgml
1 <sect> <idx/Addr/
2 <label id="sec:Addr">
3 <p>
4
5 This library provides machine addresses and is primarily intended for 
6 use in creating foreign function interfaces using GreenCard.
7
8 <tscreen><verb>
9 module Addr where
10 data Addr  -- Address type
11 instance Eq Addr
12 instance Ord Addr
13
14 nullAddr           :: Addr
15 plusAddr           :: Addr -> Int -> Addr
16
17 -- read value out of _immutable_ memory
18 indexCharOffAddr   :: Addr -> Int -> Char
19 indexIntOffAddr    :: Addr -> Int -> Int
20 indexAddrOffAddr   :: Addr -> Int -> Addr
21 indexFloatOffAddr  :: Addr -> Int -> Float
22 indexDoubleOffAddr :: Addr -> Int -> Double
23 indexWord8OffAddr  :: Addr -> Int -> Word8
24 indexWord16OffAddr :: Addr -> Int -> Word16
25 indexWord32OffAddr :: Addr -> Int -> Word32
26 indexWord64OffAddr :: Addr -> Int -> Word64
27 indexInt8OffAddr   :: Addr -> Int -> Int8
28 indexInt16OffAddr  :: Addr -> Int -> Int16
29 indexInt32OffAddr  :: Addr -> Int -> Int32
30 indexInt64OffAddr  :: Addr -> Int -> Int64
31
32 -- read value out of mutable memory
33 readCharOffAddr    :: Addr -> Int -> IO Char
34 readIntOffAddr     :: Addr -> Int -> IO Int
35 readAddrOffAddr    :: Addr -> Int -> IO Addr
36 readFloatOffAddr   :: Addr -> Int -> IO Float
37 readDoubleOffAddr  :: Addr -> Int -> IO Double
38 readWord8OffAddr   :: Addr -> Int -> IO Word8
39 readWord16OffAddr  :: Addr -> Int -> IO Word16
40 readWord32OffAddr  :: Addr -> Int -> IO Word32
41 readWord64OffAddr  :: Addr -> Int -> IO Word64
42 readInt8OffAddr    :: Addr -> Int -> IO Int8
43 readInt16OffAddr   :: Addr -> Int -> IO Int16
44 readInt32OffAddr   :: Addr -> Int -> IO Int32
45 readInt64OffAddr   :: Addr -> Int -> IO Int64
46
47 -- write value into mutable memory
48 writeCharOffAddr   :: Addr -> Int -> Char   -> IO ()
49 writeIntOffAddr    :: Addr -> Int -> Int    -> IO ()
50 writeAddrOffAddr       :: Addr -> Int -> Addr   -> IO ()
51 writeForeignObjOffAddr :: Addr -> Int -> ForeignObj -> IO ()
52 writeFloatOffAddr  :: Addr -> Int -> Float  -> IO ()
53 writeDoubleOffAddr :: Addr -> Int -> Double -> IO ()
54 writeWord8OffAddr  :: Addr -> Int -> Word8  -> IO ()
55 writeWord16OffAddr :: Addr -> Int -> Word16 -> IO ()
56 writeWord32OffAddr :: Addr -> Int -> Word32 -> IO ()
57 writeWord64OffAddr :: Addr -> Int -> Word64 -> IO ()
58 writeInt8OffAddr   :: Addr -> Int -> Int8   -> IO ()
59 writeInt16OffAddr  :: Addr -> Int -> Int16  -> IO ()
60 writeInt32OffAddr  :: Addr -> Int -> Int32  -> IO ()
61 writeInt64OffAddr  :: Addr -> Int -> Int64  -> IO ()
62 </verb></tscreen>
63
64 Hugs provides <tt/Addr/ and <tt/nullAddr/ but does not provide any of
65 the index, read or write functions.  They can be implemented using 
66 GreenCard if required.
67
68