Acknowledgements |
Special thanks to:
Paul Mensonides for his invaluable help while developing the macro expansion engine and his insightful tips. He developed the recursive macro expansion algorithm implemented herein and also contributed most of the small testcases used for testing the correctness of the macro expansion.
Dan Nuffer, who wrote the initial Re2C based C++ lexer and the Slex (Spirit Lex) scanner generator sample.
Martin Wille for helping with the port to Linux, testing on Linux and for contributing the automated test scripts.
Vladimir Prus for helping with the command line and config file options analysis for the Wave driver executable.
Juan Carlos Arevalo-Baeza, who wrote the Spirit cpp_lexer sample, from which are taken some ideas.
Andrei Alexandrescu for allowing to use his flex_string class, a policy based std::basic_string<> compatible string implementation.
Reece Dunn, Vesa Karvonen, Faisal Vali, Porter Schermerhorn, Juergen Hunold, Jozsef Mihalicza and Daniel Fontijne for reporting several problems and bugs.
Tarmo Pikaro for reporting several bug while compiling specific headers from the Microsoft Windows SDK.
Rob Stewart helped a lot with proof reading the documentation.
Stefan Seefeld for integrating Wave into his Synopsis library and finding a couple of bugs along the way.
Andreas Sæbjørnsen and Felipe Magno de Almeida for suggesting some extensions and corrections to the Wave preprocessing hook interface and related testing.
Tobias Schwinger for suggesting the 'pragma wave option(output:...)' and '#pragma message("...")' functionalities and reporting a couple of bugs.
Richard Guenther for fixing a nasty buffer overrun problem in the Re2C lexer.
Danny Havenith for contributing his partial C++ parser hannibal as a sample to Wave.
and last but not least
Joel de Guzman for nudging me into this adventure and for his work on the Spirit parser framework, without which the Wave library wouldn't have been possible.
Special thanks also to people who gave feedback and valuable comments, particularly members of Boost and Spirit mailing lists. This includes all those who participated in the Boost review:
Tom Brinkman (who volunteered to be the review manager), David Abrahams, Beman Dewes, Reece Dunn, Larry Evans, Doug Gregor, Joel de Guzman, Baptiste Lepilleur, Andy Little, Paul Mensonides, Dan Nuffer, Andreas Pokorny, Vladimir Prus, Gennadiy Rozental, Michiel Salters, Jonathan Turkanis, Chris Uzdavinis, Pavel Vozenilek, Michael Walter
The Wave library uses the following Boost [8] libraries:
Boost Spirit (LL parser framework that represents parsers directly as EBNF grammars in inlined C++)
Boost Iterator Adaptor Library (Adapt a base type into a standard conforming iterator)
Boost Filesystem Library (Portable paths, iteration over directories, and other useful filesystem operations)
Boost Program options and arguments library
and other small parts of different Boost libraries.
Copyright © 2003-2008 Hartmut Kaiser
Distributed under the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)