[project @ 1998-12-02 13:17:09 by simonm]
[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
13 nullAddr           :: Addr
14 plusAddr           :: Addr -> Int -> Addr
15
16 -- read value out of _immutable_ memory
17 indexCharOffAddr   :: Addr -> Int -> Char
18 indexIntOffAddr    :: Addr -> Int -> Int     -- should we drop this?
19 indexAddrOffAddr   :: Addr -> Int -> Addr
20 indexFloatOffAddr  :: Addr -> Int -> Float
21 indexDoubleOffAddr :: Addr -> Int -> Double
22 indexWord8OffAddr  :: Addr -> Int -> Word8
23 indexWord16OffAddr :: Addr -> Int -> Word16
24 indexWord32OffAddr :: Addr -> Int -> Word32
25 indexWord64OffAddr :: Addr -> Int -> Word64
26 indexInt8OffAddr   :: Addr -> Int -> Int8
27 indexInt16OffAddr  :: Addr -> Int -> Int16
28 indexInt32OffAddr  :: Addr -> Int -> Int32
29 indexInt64OffAddr  :: Addr -> Int -> Int64
30
31 -- read value out of mutable memory
32 readCharOffAddr    :: Addr -> Int -> IO Char
33 readIntOffAddr     :: Addr -> Int -> IO Int  -- should we drop this?
34 readAddrOffAddr    :: Addr -> Int -> IO Addr
35 readFloatOffAddr   :: Addr -> Int -> IO Float
36 readDoubleOffAddr  :: Addr -> Int -> IO Double
37 readWord8OffAddr   :: Addr -> Int -> IO Word8
38 readWord16OffAddr  :: Addr -> Int -> IO Word16
39 readWord32OffAddr  :: Addr -> Int -> IO Word32
40 readWord64OffAddr  :: Addr -> Int -> IO Word64
41 readInt8OffAddr    :: Addr -> Int -> IO Int8
42 readInt16OffAddr   :: Addr -> Int -> IO Int16
43 readInt32OffAddr   :: Addr -> Int -> IO Int32
44 readInt64OffAddr   :: Addr -> Int -> IO Int64
45
46 -- write value into mutable memory
47 writeCharOffAddr   :: Addr -> Int -> Char   -> IO ()
48 writeIntOffAddr    :: Addr -> Int -> Int    -> IO ()  -- should we drop this?
49 writeAddrOffAddr       :: Addr -> Int -> Addr   -> IO ()
50 writeForeignObjOffAddr :: Addr -> Int -> ForeignObj -> IO ()
51 writeFloatOffAddr  :: Addr -> Int -> Float  -> IO ()
52 writeDoubleOffAddr :: Addr -> Int -> Double -> IO ()
53 writeWord8OffAddr  :: Addr -> Int -> Word8  -> IO ()
54 writeWord16OffAddr :: Addr -> Int -> Word16 -> IO ()
55 writeWord32OffAddr :: Addr -> Int -> Word32 -> IO ()
56 writeWord64OffAddr :: Addr -> Int -> Word64 -> IO ()
57 writeInt8OffAddr   :: Addr -> Int -> Int8   -> IO ()
58 writeInt16OffAddr  :: Addr -> Int -> Int16  -> IO ()
59 writeInt32OffAddr  :: Addr -> Int -> Int32  -> IO ()
60 writeInt64OffAddr  :: Addr -> Int -> Int64  -> IO ()
61 </verb></tscreen>
62
63 Hugs provides <tt/Addr/ and <tt/nullAddr/ but does not provide any of
64 the index, read or write functions.  They can be implemented using 
65 GreenCard if required.
66
67