I've applied the list rewrite patch to CVS HEAD. I've also sent a
copy of the patch I applied to the -patches list.
Notes:
- the tree compiles without warnings and passes the regression
tests. I'm not aware of any bugs, regression failures, or compiler
warnings caused by the list rewrite patch -- please let me know if
you encounter anything
- client code that uses the List API is _not_ source compatible with
the new List API. The most common change will be the need to change
the foreach() iteration variable to a ListCell*, rather than a
List*. There are also some subtle changes in behavior: for example,
lcons() is now destructive (in the sense that you cannot call it on
a list and expect the list you pass to lcons() to be unmodified;
this was the case with the old list API)
Remaining work:
- investigate inline functions for non-GCC compilers
- disable the use of the compatibility API throughout the tree and
change the code over to use the new API function names. This ought
to be largely a mechanical search and replace operation -- any
patches are welcome. I plan to start converting the remainder of the
tree in this fashion tomorrow.
- use the new for_each_cell() and forboth() macros throughout the
tree, as appropriate.
- remove the FastList API -- there is no need for it anymore. Tom,
would you like to do this or should I?
- anything else?
Thanks to Tom and Alvaro for their assistance in completing this work.
-Neil