<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>The Binding Generator C->Haskell</TITLE> <LINK HREF="c2hs-1.html" REL=next> </HEAD> <BODY> <A HREF="c2hs-1.html">Next</A> Previous Contents <HR> <H1>The Binding Generator C->Haskell</H1> <H2>Manuel M. T. Chakravarty, <CODE>chak@cse.unsw.edu.au</CODE></H2>v0.7, 18 June 2001 <P><HR> <EM>C->Haskell is an interface generator that simplifies the development of <A HREF="http://haskell.org">Haskell</A> bindings to C libraries. The tool processes existing C header files that determine data layout and function signatures on the C side in conjunction with Haskell modules that specify Haskell-side type signatures and marshaling details. Hooks embedded in the Haskell code signal access to C structures and functions -- they are expanded by the interfacing tool in dependence on information from the corresponding C header file. Another noteworthy property is the lightweight nature of the approach. More background information is available in a research paper discussing C->Haskell, which is at <A HREF="http://www.cse.unsw.edu.au/~chak/papers/papers.html#c2hs">http://www.cse.unsw.edu.au/~chak/papers/papers.html#c2hs</A>.</EM> <HR> <P><B>Copyright & Distribution</B> <P>Copyright (c) [1999..2001] by <A HREF="http://www.cse.unsw.edu.au/~chak/">Manuel M. T. Chakravarty</A>. The manual is distributed under the terms GNU Free Documentation License available from <A HREF="http://www.fsf.org/copyleft/fdl.html">http://www.fsf.org/copyleft/fdl.html</A>. <P>The master copy of this document is at <A HREF="http://www.cse.unsw.edu.au/~chak/haskell/c2hs/">http://www.cse.unsw.edu.au/~chak/haskell/c2hs/</A>; the source is in SGML, which allows you to produce a selection of standard formats, including HTML and Postscript. <P> <P><B>Contributions</B> <P>If you have any comments, suggestions, or contributions, please send them to <A HREF="mailto:chak@cse.unsw.edu.au">chak@cse.unsw.edu.au</A>. <P> <P> <P> <H2><A NAME="toc1">1.</A> <A HREF="c2hs-1.html">Installation</A></H2> <UL> <LI><A HREF="c2hs-1.html#ss1.1">1.1 Where is the Source?</A> <LI><A HREF="c2hs-1.html#ss1.2">1.2 What Else Do I Need?</A> <LI><A HREF="c2hs-1.html#ss1.3">1.3 I Got Everything, and Now?</A> </UL> <P> <H2><A NAME="toc2">2.</A> <A HREF="c2hs-2.html">Usage of C->Haskell</A></H2> <UL> <LI><A HREF="c2hs-2.html#ss2.1">2.1 Usage of <CODE>c2hs</CODE></A> <LI><A HREF="c2hs-2.html#ss2.2">2.2 Compilation of a Generated Haskell API</A> </UL> <P> <H2><A NAME="toc3">3.</A> <A HREF="c2hs-3.html">Implementation of Haskell Binding Modules</A></H2> <UL> <LI><A HREF="c2hs-3.html#ss3.1">3.1 Import Hooks</A> <LI><A HREF="c2hs-3.html#ss3.2">3.2 Context Hooks</A> <LI><A HREF="c2hs-3.html#ss3.3">3.3 Type Hooks</A> <LI><A HREF="c2hs-3.html#ss3.4">3.4 Sizeof Hooks</A> <LI><A HREF="c2hs-3.html#ss3.5">3.5 Enumeration Hooks</A> <LI><A HREF="c2hs-3.html#ss3.6">3.6 Call Hooks</A> <LI><A HREF="c2hs-3.html#ss3.7">3.7 Get Hooks</A> <LI><A HREF="c2hs-3.html#ss3.8">3.8 Set Hooks</A> <LI><A HREF="c2hs-3.html#ss3.9">3.9 Pointer Hooks</A> <LI><A HREF="c2hs-3.html#ss3.10">3.10 Grammar Rules</A> </UL> <P> <H2><A NAME="toc4">4.</A> <A HREF="c2hs-4.html">The Haskell FFI Marshalling Library</A></H2> <P> <H2><A NAME="toc5">5.</A> <A HREF="c2hs-5.html">Bug Reports and Suggestions</A></H2> <P> <H2><A NAME="toc6">6.</A> <A HREF="c2hs-6.html">Copyright</A></H2> <P> <H2><A NAME="toc7">7.</A> <A HREF="c2hs-7.html">GNU Free Documentation License</A></H2> <P> <H2><A NAME="toc8">8.</A> <A HREF="c2hs-8.html">Release Notes</A></H2> <UL> <LI><A HREF="c2hs-8.html#ss8.1">8.1 Version 0.9.9 "Blue Ginger"</A> <LI><A HREF="c2hs-8.html#ss8.2">8.2 Version 0.8.2 "Gentle Moon"</A> <LI><A HREF="c2hs-8.html#ss8.3">8.3 Version 0.8.1 "Gentle Moon"</A> <LI><A HREF="c2hs-8.html#ss8.4">8.4 Version 0.7.10 "Afterthought"</A> <LI><A HREF="c2hs-8.html#ss8.5">8.5 Version 0.7.9 "Afterthought"</A> <LI><A HREF="c2hs-8.html#ss8.6">8.6 Version 0.7.8</A> <LI><A HREF="c2hs-8.html#ss8.7">8.7 Version 0.7.7</A> <LI><A HREF="c2hs-8.html#ss8.8">8.8 Version 0.7.6</A> <LI><A HREF="c2hs-8.html#ss8.9">8.9 Version 0.7.5</A> </UL> <HR> <A HREF="c2hs-1.html">Next</A> Previous Contents </BODY> </HTML>