2023-05-19 03:18:38 -04:00
|
|
|
<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:
|
2023-05-19 03:28:13 -04:00
|
|
|
<UL>
|
2023-05-19 03:18:38 -04:00
|
|
|
<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.
|
2023-05-19 03:28:13 -04:00
|
|
|
<LI> Output source file information (the name of the input file to
|
2023-05-19 03:18:38 -04:00
|
|
|
<code>lcc -ffigen</code>); this can
|
2023-05-19 03:28:13 -04:00
|
|
|
be useful since the back end can generate C files which
|
2023-05-19 03:18:38 -04:00
|
|
|
<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
|
2023-05-19 03:28:13 -04:00
|
|
|
and nice rewrites? C libraries like Open Inventor use macros
|
2023-05-19 03:18:38 -04:00
|
|
|
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
|
2023-05-19 03:28:13 -04:00
|
|
|
not do). In addition, the output file is called SYMBOLS but should
|
2023-05-19 03:18:38 -04:00
|
|
|
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.
|
2023-05-19 03:28:13 -04:00
|
|
|
<LI> Back-end for Gambit-C (Harold's got one working, it also does
|
2023-05-19 03:18:38 -04:00
|
|
|
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>
|