The Wave C++ preprocessor library is a Standards conformant
implementation of the mandated C99/C++ preprocessor
functionality packed behind a simple to use interface, which
integrates well with the well known idioms of the Standard
Template Library (STL). The Wave C++ preprocessor is not a
monolithic application, it's rather a modular library, which
exposes mainly a context object and an iterator interface. The
context object helps to configure the actual preprocessing
process (as search path's, predefined macros, etc.). The exposed
iterators are generated by this context object too. Iterating
over the sequence defined by the two iterators will return the
preprocessed tokens, which are built on the fly from the given
input stream. The C++ preprocessor iterator itself is fed by a
C++ lexer iterator, which implements an abstract interface. The
C++ lexers packaged with the Wave library may be used
standalone, too, and are not tied to the C++ preprocessor
iterator at all. To make the C++ preprocessing library mod