Boost logo

Boost :

Subject: Re: [boost] Partial preprocessing for Fusion, et.al. (was: [netlib] Update: 0.9 will not be header-only)
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2010-12-06 12:48:27


> At Mon, 6 Dec 2010 07:26:09 -0600,
> Hartmut Kaiser wrote:
> >
> > > On Dec 6, 2010, at 7:34 AM, "Hartmut Kaiser"
> > > <hartmut.kaiser_at_[hidden]>
> > > wrote:
> > >
> > > > What everybody is looking for is partial preprocessing, i.e.
> > > > expansion of only some of the macros. Wave does not directly
> > > > support this (does any
> > > > preprocessor?)
> > >
> > > Isn't that just a matter of injecting #undefs for the other macros?
> > > Perhaps an easy hack to wave…
> >
> > That won't do it. You want to properly handle #ifdef's (how do you do
> > that with #undef'ed macros?) to keep platform specific code in place.
>
> Then "expansion of only some of the macros" doesn't really capture what
> you mean by "partial preprocessing." Am I missing something?

Well, that's because the suggestion I made is not about expanding a partial subset of all macros, but about generating output only for that part of the input we're interested in (i.e. single header files). I'm sorry if my wording caused confusion.

I wrote:

> Wave does not directly support this (does any preprocessor?), but what you can do
> is to use #pragmas to enable/disable output generation. This creates the effect of
> partially expanding only a subset of the input.

By preprocessing everything as usual, but creating output for only part of the input, you can create the illusion of doing partial preprocessing. IIUC, that's essentially what needs to be accomplished for generating preprocessed headers for Fusion, Proto, etc.

Regards Hartmut
---------------
http://boost-spirit.com


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk