
Hi Felipe,
In fact, it was easy to implement for this particular case. The 'evaluated_conditional_expression()' preprocessing hook now has a bool return value, which forces Wave to re-evaluate the expression as long as it is 'true'. The new prototype will be:
template <typename ContextT, typename ContainerT> bool evaluated_conditional_expression(ContextT const &ctx, ContainerT const& expression, bool expression_value) { return false; } // ok to continue, do not re-evaluate expression
Wave guarantees to keep the own state unchanged during this, which means you can save the context state, change a macro definition and return true to force the expression to be re-evaluated. This scheme should ensure a consistent behaviour.
I'll check these changes into the CVS as soon as it will be up again. It won't be part of the Boost 1.34.0 release, though.
The changes are checked into the Boost CVS::HEAD now. Please let me know if this fits your needs now. Regards Hartmut