[project @ 2000-06-19 21:28:00 by panne]
[ghc-hetmet.git] / docs / ffi.sgml
index 85f8bcf..35e6d76 100644 (file)
@@ -1,18 +1,3 @@
-<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> 
-
-<Article id="ffi">
-
-<ArtHeader>
-
-<Title>A Haskell foreign function interface</Title>
-<Author><OtherName>The GHC Team</OtherName></Author>
-<Address><Email>glasgow-haskell-&lcub;users,bugs&rcub;@dcs.gla.ac.uk</Email>
-</Address>
-<Edition>version 0.99</Edition>
-<PubDate>May 2000</PubDate>
-
-</ArtHeader>
-
 <Sect1 id="sec-intro">
 <Title>Introduction
 </Title>
@@ -625,9 +610,7 @@ defines the mapping between Haskell and C types.
 <Table id="sec-mapping-table">
 <Title>Mapping of Haskell types to C types</Title>
 
-<TGroup Cols="6">
-<ColSpec Align="Left" Colsep="0">
-<ColSpec Align="Left" Colsep="0">
+<TGroup Cols="4">
 <ColSpec Align="Left" Colsep="0">
 <ColSpec Align="Left" Colsep="0">
 <ColSpec Align="Left" Colsep="0">
@@ -646,90 +629,80 @@ defines the mapping between Haskell and C types.
 <Literal>Char</Literal> </Entry>
 <Entry> <Literal>HsChar</Literal> </Entry>
 <Entry> unspec. integral type </Entry>
-<Entry> <Literal>HS&lowbar;CHAR&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;CHAR&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;CHAR&lowbar;MIN</Literal> .. <Literal>HS&lowbar;CHAR&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Int</Literal> </Entry>
 <Entry> <Literal>HsInt</Literal> </Entry>
 <Entry> signed integral of unspec. size(4) </Entry>
-<Entry> <Literal>HS&lowbar;INT&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;INT&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;INT&lowbar;MIN</Literal> ..
+<Literal>HS&lowbar;INT&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Int8</Literal> (2) </Entry>
 <Entry> <Literal>HsInt8</Literal> </Entry>
 <Entry> 8 bit signed integral </Entry>
-<Entry> <Literal>HS&lowbar;INT8&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;INT8&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;INT8&lowbar;MIN</Literal> 
+..
+<Literal>HS&lowbar;INT8&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Int16</Literal> (2) </Entry>
 <Entry> <Literal>HsInt16</Literal> </Entry>
 <Entry> 16 bit signed integral </Entry>
-<Entry> <Literal>HS&lowbar;INT16&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;INT16&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;INT16&lowbar;MIN</Literal>
+.. <Literal>HS&lowbar;INT16&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Int32</Literal> (2) </Entry>
 <Entry> <Literal>HsInt32</Literal> </Entry>
 <Entry> 32 bit signed integral </Entry>
-<Entry> <Literal>HS&lowbar;INT32&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;INT32&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;INT32&lowbar;MIN</Literal> ..
+<Literal>HS&lowbar;INT32&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Int64</Literal> (2,3) </Entry>
 <Entry> <Literal>HsInt64</Literal> </Entry>
 <Entry> 64 bit signed integral (3) </Entry>
-<Entry> <Literal>HS&lowbar;INT64&lowbar;MIN</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;INT64&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>HS&lowbar;INT64&lowbar;MIN</Literal> ..
+<Literal>HS&lowbar;INT64&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Word8</Literal> (2) </Entry>
 <Entry> <Literal>HsWord8</Literal> </Entry>
 <Entry> 8 bit unsigned integral </Entry>
-<Entry> <Literal>0</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;WORD8&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>0</Literal> ..
+<Literal>HS&lowbar;WORD8&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Word16</Literal> (2) </Entry>
 <Entry> <Literal>HsWord16</Literal> </Entry>
 <Entry> 16 bit unsigned integral </Entry>
-<Entry> <Literal>0</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;WORD16&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>0</Literal> ..
+<Literal>HS&lowbar;WORD16&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Word32</Literal> (2) </Entry>
 <Entry> <Literal>HsWord32</Literal> </Entry>
 <Entry> 32 bit unsigned integral </Entry>
-<Entry> <Literal>0</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;WORD32&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>0</Literal> ..
+<Literal>HS&lowbar;WORD32&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
 <Literal>Word64</Literal> (2,3) </Entry>
 <Entry> <Literal>HsWord64</Literal> </Entry>
 <Entry> 64 bit unsigned integral (3) </Entry>
-<Entry> <Literal>0</Literal> </Entry>
-<Entry>..</Entry>
-<Entry> <Literal>HS&lowbar;WORD64&lowbar;MAX</Literal></Entry>
+<Entry> <Literal>0</Literal> ..
+<Literal>HS&lowbar;WORD64&lowbar;MAX</Literal></Entry>
 </Row>
 <Row>
 <Entry>
@@ -737,8 +710,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsFloat</Literal> </Entry>
 <Entry> floating point of unspec. size (5) </Entry>
 <Entry> (10) </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
 </Row>
 <Row>
 <Entry>
@@ -746,8 +717,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsDouble</Literal> </Entry>
 <Entry> floating point of unspec. size (5) </Entry>
 <Entry> (10) </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
 </Row>
 <Row>
 <Entry>
@@ -755,8 +724,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsBool</Literal> </Entry>
 <Entry> unspec. integral type </Entry>
 <Entry> (11) </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
 </Row>
 <Row>
 <Entry>
@@ -764,8 +731,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsAddr</Literal> </Entry>
 <Entry> void* (6) </Entry>
 <Entry> </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
 </Row>
 <Row>
 <Entry>
@@ -773,8 +738,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsForeignObj</Literal> </Entry>
 <Entry> void* (7) </Entry>
 <Entry> </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
 </Row>
 <Row>
 <Entry>
@@ -782,12 +745,6 @@ defines the mapping between Haskell and C types.
 <Entry> <Literal>HsStablePtr</Literal> </Entry>
 <Entry> void* (8) </Entry>
 <Entry> </Entry>
-<Entry> </Entry>
-<Entry> </Entry>
-</Row>
-<Row>
-<Entry>
-</Entry>
 </Row>
 </TBody>
 
@@ -969,7 +926,7 @@ foreign import "mumble" mumble :: ForeignObj -&#62; IO ()
 
 f :: Addr -&#62; IO ()
 f ptr = do
-  fo &#60;- makeForeignObj ptr myFinalizer
+  fo &#60;- newForeignObj ptr myFinalizer
   mumble fo
 </ProgramListing>
 
@@ -1322,7 +1279,7 @@ contain the address of the label <Literal>freeAtLast</Literal>.
 </Sect2>
 
 </Sect1>
-
+<!-- This doesn't need to be seen in the docs
 <Sect1 id="sec-changelog">
 <Title>Change history
 </Title>
@@ -1333,14 +1290,14 @@ contain the address of the label <Literal>freeAtLast</Literal>.
 <ListItem>
 
 <Para>
-0.95 --&gt; 0.96:
+0.95 &gt; 0.96:
 
 <ItemizedList>
 <ListItem>
 
 <Para>
 changed the C representation of <Literal>Haskell&lowbar;ForeignObj</Literal> from
-<Literal>(long*)</Literal> to <Literal>(void*)</Literal> -- ANSI C guarantees that <Literal>(void*)</Literal>
+<Literal>(long*)</Literal> to <Literal>(void*)</Literal>  ANSI C guarantees that <Literal>(void*)</Literal>
 is the widest possible data pointer.
 </Para>
 </ListItem>
@@ -1365,7 +1322,7 @@ Replaced confusing uses of <Literal>stdcall</Literal> with <Literal>ccall</Liter
 <ListItem>
 
 <Para>
-0.96 --&gt; 0.97:
+0.96 &gt; 0.97:
 
 <ItemizedList>
 <ListItem>
@@ -1417,7 +1374,7 @@ FFI types rather than the longer <Literal>Haskell&lowbar;</Literal>.
 <ListItem>
 
 <Para>
-0.97 --&gt; 0.98:
+0.97 &gt; 0.98:
 
 <ItemizedList>
 <ListItem>
@@ -1449,7 +1406,7 @@ functions.
 <ListItem>
 
 <Para>
-0.98 --&gt; 0.99:
+0.98 &gt; 0.99:
 
 <ItemizedList>
 <ListItem>
@@ -1475,7 +1432,7 @@ in that section was contributed by Sven Panne.)
 <ListItem>
 
 <Para>
-0.99 --&gt; 0.99.1:
+0.99 &gt; 0.99.1:
 
 <ItemizedList>
 <ListItem>
@@ -1497,5 +1454,4 @@ in that section was contributed by Sven Panne.)
 </Para>
 
 </Sect1>
-
-</Article>
+-->