Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > by-pkgid > 3575c686237628b9bdedf5f294fbd58c > files > 25

hugs98-20011215-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.6">
 <TITLE>The Hugs-GHC Extension Libraries: Addr</TITLE>
 <LINK HREF="libs-3.html" REL=next>
 <LINK HREF="libs-1.html" REL=previous>
 <LINK HREF="libs.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="libs-3.html">Next</A>
<A HREF="libs-1.html">Previous</A>
<A HREF="libs.html#toc2">Contents</A>
<HR>
<H2><A NAME="sec:Addr"></A> <A NAME="s2">2. Addr</A></H2>

<P>
<P>This library provides machine addresses and is primarily intended for 
use in creating foreign function interfaces using GreenCard.
<P>
<BLOCKQUOTE><CODE>
<PRE>
module Addr where
data Addr  -- Address type
instance Eq Addr
instance Ord Addr

nullAddr           :: Addr
plusAddr           :: Addr -> Int -> Addr

-- read value out of _immutable_ memory
indexCharOffAddr   :: Addr -> Int -> Char
indexIntOffAddr    :: Addr -> Int -> Int
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
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 ()
writeAddrOffAddr       :: Addr -> Int -> Addr   -> IO ()
writeForeignObjOffAddr :: Addr -> Int -> ForeignObj -> 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>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>
<P>
<HR>
<A HREF="libs-3.html">Next</A>
<A HREF="libs-1.html">Previous</A>
<A HREF="libs.html#toc2">Contents</A>
</BODY>
</HTML>