|
Boost : |
Subject: Re: [boost] [wave] preprocessor directives in output
From: Fletcher, John P (j.p.fletcher_at_[hidden])
Date: 2014-01-21 02:17:07
How about making macros for #if, #else, #endif
BOOST_KEEP_UNTIL_WAVE_OUTPUT(if) -> #if
Then tell Wave not to translate it and translate it in the output.
John
________________________________________
From: Boost [boost-bounces_at_[hidden]] on behalf of Joel de Guzman [djowel_at_[hidden]]
Sent: 21 January 2014 06:29
To: boost_at_[hidden]
Subject: Re: [boost] [wave] preprocessor directives in output
On 1/21/14, 9:46 AM, Eric Niebler wrote:
> I'm looking at automating the regeneration of Fusion's preprocess
> headers with the wave tool. Currently, it's impossible because of stuff
> like this (from container\vector\vector.hpp):
>
> #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
> vector(vector&& rhs)
> : vec(std::forward<vector_n>(rhs.vec)) {}
> #endif
>
> When the wave driver is run, either BOOST_NO_CXX11_RVALUE_REFERENCES is
> defined, in which case the block of code gets left out, or else it
> isn't, in which case the block of code is left in. Both are wrong. What
> should happen is that the #if and #else directives should be present in
> wave's output.
>
> I can keep wave from expanding certain named macros with the -N switch,
> but there doesn't seem to be a way to selectively keep wave from
> evaluating #if/#else directives. Or is there?
I asked Hartmut this same question before. IIRC, it's an issue that has no
workaround (or fix) yet. I hope I am wrong.
Regards,
--
Joel de Guzman
http://www.ciere.com
http://boost-spirit.com
http://www.cycfi.com/
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk