File: libs-7.html

package info (click to toggle)
hugs 1.4.199801-1
  • links: PTS
  • area: non-free
  • in suites: slink
  • size: 7,220 kB
  • ctags: 5,609
  • sloc: ansic: 32,083; haskell: 12,143; yacc: 949; perl: 823; sh: 602; makefile: 236
file content (81 lines) | stat: -rw-r--r-- 3,206 bytes parent folder | download
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 -&gt; Int -&gt; Addr

-- read value out of _immutable_ memory
indexCharOffAddr   :: Addr -&gt; Int -&gt; Char
indexIntOffAddr    :: Addr -&gt; Int -&gt; Int     -- should we drop this?
indexAddrOffAddr   :: Addr -&gt; Int -&gt; Addr
indexFloatOffAddr  :: Addr -&gt; Int -&gt; Float
indexDoubleOffAddr :: Addr -&gt; Int -&gt; Double
indexWord8OffAddr  :: Addr -&gt; Int -&gt; Word8
indexWord16OffAddr :: Addr -&gt; Int -&gt; Word16
indexWord32OffAddr :: Addr -&gt; Int -&gt; Word32
indexWord64OffAddr :: Addr -&gt; Int -&gt; Word64
indexInt8OffAddr   :: Addr -&gt; Int -&gt; Int8
indexInt16OffAddr  :: Addr -&gt; Int -&gt; Int16
indexInt32OffAddr  :: Addr -&gt; Int -&gt; Int32
indexInt64OffAddr  :: Addr -&gt; Int -&gt; Int64

-- read value out of mutable memory
readCharOffAddr    :: Addr -&gt; Int -&gt; IO Char
readIntOffAddr     :: Addr -&gt; Int -&gt; IO Int  -- should we drop this?
readAddrOffAddr    :: Addr -&gt; Int -&gt; IO Addr
readFloatOffAddr   :: Addr -&gt; Int -&gt; IO Float
readDoubleOffAddr  :: Addr -&gt; Int -&gt; IO Double
readWord8OffAddr   :: Addr -&gt; Int -&gt; IO Word8
readWord16OffAddr  :: Addr -&gt; Int -&gt; IO Word16
readWord32OffAddr  :: Addr -&gt; Int -&gt; IO Word32
readWord64OffAddr  :: Addr -&gt; Int -&gt; IO Word64
readInt8OffAddr    :: Addr -&gt; Int -&gt; IO Int8
readInt16OffAddr   :: Addr -&gt; Int -&gt; IO Int16
readInt32OffAddr   :: Addr -&gt; Int -&gt; IO Int32
readInt64OffAddr   :: Addr -&gt; Int -&gt; IO Int64

-- write value into mutable memory
writeCharOffAddr   :: Addr -&gt; Int -&gt; Char   -&gt; IO ()
writeIntOffAddr    :: Addr -&gt; Int -&gt; Int    -&gt; IO ()  -- should we drop this?
writeAddrOffAddr   :: Addr -&gt; Int -&gt; Addr   -&gt; IO ()
writeFloatOffAddr  :: Addr -&gt; Int -&gt; Float  -&gt; IO ()
writeDoubleOffAddr :: Addr -&gt; Int -&gt; Double -&gt; IO ()
writeWord8OffAddr  :: Addr -&gt; Int -&gt; Word8  -&gt; IO ()
writeWord16OffAddr :: Addr -&gt; Int -&gt; Word16 -&gt; IO ()
writeWord32OffAddr :: Addr -&gt; Int -&gt; Word32 -&gt; IO ()
writeWord64OffAddr :: Addr -&gt; Int -&gt; Word64 -&gt; IO ()
writeInt8OffAddr   :: Addr -&gt; Int -&gt; Int8   -&gt; IO ()
writeInt16OffAddr  :: Addr -&gt; Int -&gt; Int16  -&gt; IO ()
writeInt32OffAddr  :: Addr -&gt; Int -&gt; Int32  -&gt; IO ()
writeInt64OffAddr  :: Addr -&gt; Int -&gt; Int64  -&gt; 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>