1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
<HTML>
<HEAD>
<TITLE>The Hugs-GHC Extension Libraries: Addr </TITLE>
</HEAD>
<BODY>
<A HREF="libs-6.html">Previous</A>
<A HREF="libs-8.html">Next</A>
<A HREF="libs.html#toc7">Table of Contents</A>
<HR>
<H2><A NAME="s7">7. Addr </A></H2>
<P>This library provides machine addresses and is primarily intended for
use in creating foreign function interfaces using GreenCard.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
module Addr where
data Addr -- Address type
instance Eq Addr
nullAddr :: Addr
plusAddr :: Addr -> Int -> Addr
-- 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
-- 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 ()
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Hugs provides <CODE>Addr</CODE> and <CODE>nullAddr</CODE> but does not provide any of
the index, read or write functions. They can be implemented using
GreenCard if required.</P>
<HR>
<A HREF="libs-6.html">Previous</A>
<A HREF="libs-8.html">Next</A>
<A HREF="libs.html#toc7">Table of Contents</A>
</BODY>
</HTML>
|