ffigen-website/www/todo.html

93 lines
2.7 KiB
HTML

<HTML>
<HEAD>
<TITLE>FFIGEN To-do list</TITLE>
<LINK REV="made" HREF="mailto:lth@acm.org">
</HEAD>
<BODY>
<H2>FFIGEN To-do list</H2>
Updated 14 June 2000.
<H3>Intermediate format features</H3>
<UL>
<LI> Full ANSI C support:
<UL>
<LI> [done] Bitfields.
<LI> General support for type qualifiers.
</UL>
<LI> Output a machine description.
<LI> Output struct/union sizes.
<LI> Output structure field offsets.
<LI> Output line and column information.
<LI> Retain and output comments.
<LI> Output source file information (the name of the input file to
<code>lcc -ffigen</code>); this can
be useful since the back end can generate C files which
<code>#includes</code> the source header file.
<LI> Support certain extensions: Microsoft __huge, __near, __far, __based,
__cdecl, __pascal; GNU __inline; others?
</UL>
<H3>Processing (both front-end and back-end)</H3>
<UL>
<LI> Some general support for a policy file?
<LI> More intelligent macro-expansion support: macros should be expanded
as far as possible, and extraneous cruft should be removed so that the
back end can produce better translations.
<LI> Support for some form of tokenized macros to support certain regular
and nice rewrites? C libraries like Open Inventor use macros
heavily in a virtual-function like style:
<pre>
#define SoSphSetOverride(_this, state) \
SoNodeSetOverride((SoNode *)_this, state)
</pre>
and it would be nice to provide some support for such cases in the form
of already-tokenized output.
</UL>
<H3>Implementation features</H3>
<UL>
<LI> Move to lcc 4.1, and ASDL.
<LI> [done] Move to lcc 3.6.
<LI> [done] Proper integration with lcc. Currently, it uses the lcc driver but
it generates code, performs assembly, and produces file.o (which it need
not do). In addition, the output file is called SYMBOLS but should
rather be called filename.ffi.
</UL>
<H3>Known bugs</H3>
<UL>
<LI> [done] Currently the rhs of a macro is output without any whitespace. This
is not correct if there are two adjacent identifiers or reserved words,
which happens in declarations (consider "const int blah"). [Harold]
</UL>
<H3>Back-ends</H3>
<UL>
<LI> Back-end for Scheme-to-C.
<LI> Back-end for Gambit-C (Harold's got one working, it also does
interesting things with Open Inventor macros (see above)).
<LI> Back-end for Tcl/Tk?
<LI> Back-ends for ILU and Modula-3.
<LI> Back-end for STk.
<LI> Improvements to Chez Scheme back-end.
</UL>
<H3>Miscellaneous</H3>
<UL>
<LI> Advertise on lcc mailing list.
</UL>
<HR>
<P>
Press <A HREF="index.html">here</A> to go to the FFIGEN home page.
<hr>
<address><a href="mailto:lth@acm.org">lth@acm.org</address>
</BODY>
</HTML>