--- D:\boost_1_51_0\boost\spirit\home\qi\numeric\bool.hpp Thu Nov 1 03:47:10 2012 +++ D:\Documents\Visual Studio 2012\Projects\streams\streams\qi_bool.patched.hpp Thu Nov 1 03:46:31 2012 @@ -143,6 +143,9 @@ struct any_bool_parser : primitive_parser > { + any_bool_parser(BoolPolicies const& p = BoolPolicies()) + : p_(p) {} + template struct attribute { @@ -157,7 +160,7 @@ { typedef detail::bool_impl extract; qi::skip_over(first, last, skipper); - return extract::parse(first, last, attr, BoolPolicies()); + return extract::parse(first, last, attr, p_); } template @@ -165,6 +168,8 @@ { return info("boolean"); } + + BoolPolicies p_; }; template @@ -173,7 +178,9 @@ : primitive_parser > { template - literal_bool_parser(Value const& n) : n_(n) {} + literal_bool_parser(Value const& n + , BoolPolicies const& p = BoolPolicies()) + : n_(n), p_(p) {} template struct attribute @@ -188,7 +195,7 @@ { typedef detail::bool_impl extract; qi::skip_over(first, last, skipper); - return extract::parse(first, last, attr, BoolPolicies(), n_, n_); + return extract::parse(first, last, attr, p_, n_, n_); } template @@ -198,6 +205,7 @@ } T n_; + BoolPolicies p_; }; /////////////////////////////////////////////////////////////////////////// @@ -218,10 +226,13 @@ , any_bool_parser > , any_bool_parser >::type result_type; - - result_type operator()(unused_type, unused_type) const + + template + result_type operator()(Terminal const& term, unused_type) const { - return result_type(); + typedef tag::stateful_tag tag_type; + using spirit::detail::get_stateful_data; + return result_type(get_stateful_data::call(term)); } }; @@ -244,7 +255,10 @@ template result_type operator()(Terminal const& term, unused_type) const { - return result_type(fusion::at_c<0>(term.args)); + typedef tag::stateful_tag tag_type; + using spirit::detail::get_stateful_data; + return result_type(fusion::at_c<0>(term.args) + , get_stateful_data::call(term.term)); } };