[project @ 2001-08-08 13:19:07 by simonmar]
[ghc-hetmet.git] / ghc / docs / users_guide / glasgow_exts.sgml
index 97e02cf..abe513a 100644 (file)
@@ -617,111 +617,6 @@ qualifier list has just one element, a boolean expression.
 
   </sect1>
 
-  <sect1 id="sec-ffi">
-    <title>The foreign interface</title>
-
-    <para>The foreign interface consists of the following components:</para>
-
-    <itemizedlist>
-      <listitem>
-       <para>The Foreign Function Interface language specification
-       (included in this manual, in <xref linkend="ffi">).
-       You must use the <option>-fglasgow-exts</option> command-line option
-       to make GHC understand the <literal>foreign</literal> declarations
-       defined by the FFI.</para>
-      </listitem>
-
-      <listitem>
-       <para>The <literal>Foreign</literal> module (see <xref
-       linkend="sec-Foreign">) collects together several interfaces
-       which are useful in specifying foreign language
-       interfaces, including the following:</para>
-
-       <itemizedlist>
-         <listitem>
-           <para>The <literal>ForeignObj</literal> module (see <xref
-           linkend="sec-ForeignObj">), for managing pointers from
-           Haskell into the outside world.</para>
-         </listitem>
-      
-         <listitem>
-           <para>The <literal>StablePtr</literal> module (see <xref
-           linkend="sec-stable-pointers">), for managing pointers
-           into Haskell from the outside world.</para>
-         </listitem>
-      
-         <listitem>
-           <para>The <literal>CTypes</literal> module (see <xref
-           linkend="sec-CTypes">) gives Haskell equivalents for the
-           standard C datatypes, for use in making Haskell bindings
-           to existing C libraries.</para>
-         </listitem>
-      
-         <listitem>
-           <para>The <literal>CTypesISO</literal> module (see <xref
-           linkend="sec-CTypesISO">) gives Haskell equivalents for C
-           types defined by the ISO C standard.</para>
-         </listitem>
-      
-         <listitem>
-           <para>The <literal>Storable</literal> library, for
-           primitive marshalling of data types between Haskell and
-           the foreign language.</para>
-         </listitem>
-       </itemizedlist>
-
-      </listitem>
-    </itemizedlist>
-
-<para>The following sections also give some hints and tips on the use
-of the foreign function interface in GHC.</para>
-
-<sect2 id="glasgow-foreign-headers">
-<title>Using function headers
-</title>
-
-<para>
-<indexterm><primary>C calls, function headers</primary></indexterm>
-</para>
-
-<para>
-When generating C (using the <option>-fvia-C</option> directive), one can assist the
-C compiler in detecting type errors by using the <option>-&num;include</option> directive
-(<xref linkend="options-C-compiler">) to provide <filename>.h</filename> files containing function headers.
-</para>
-
-<para>
-For example,
-</para>
-
-<para>
-
-<programlisting>
-#include "HsFFI.h"
-
-void         initialiseEFS (HsInt size);
-HsInt        terminateEFS (void);
-HsForeignObj emptyEFS(void);
-HsForeignObj updateEFS (HsForeignObj a, HsInt i, HsInt x);
-HsInt        lookupEFS (HsForeignObj a, HsInt i);
-</programlisting>
-</para>
-
-      <para>The types <literal>HsInt</literal>,
-      <literal>HsForeignObj</literal> etc. are described in <xref
-      linkend="sec-mapping-table">.</para>
-
-      <para>Note that this approach is only
-      <emphasis>essential</emphasis> for returning
-      <literal>float</literal>s (or if <literal>sizeof(int) !=
-      sizeof(int *)</literal> on your architecture) but is a Good
-      Thing for anyone who cares about writing solid code.  You're
-      crazy not to do it.</para>
-
-</sect2>
-
-</sect1>
-
 <sect1 id="multi-param-type-classes">
 <title>Multi-parameter type classes
 </title>