bool interpret( cstring param_name, cstring source ) const { static cstring const s_YES( "YES" ); static cstring const s_Y( "Y" ); static cstring const s_NO( "NO" ); static cstring const s_N( "N" ); static cstring const s_TRUE( "TRUE" ); static cstring const s_FALSE( "FALSE" ); static cstring const s_one( "1" ); static cstring const s_zero( "0" ); source.trim(); if( source.is_empty() || case_ins_eq( source, s_YES ) || case_ins_eq( source, s_Y ) || case_ins_eq( source, s_one ) || case_ins_eq( source, s_TRUE ) ) return true; if( case_ins_eq( source, s_NO ) || case_ins_eq( source, s_N ) || case_ins_eq( source, s_zero ) || case_ins_eq( source, s_FALSE ) ) return false; BOOST_TEST_I_THROW( format_error( param_name ) << source << " can't be interpreted as bool value." ); }
static bool _( cstring source, hexerboost::optional<bool>& res ) { BOOST_RT_PARAM_TRACE( "In interpret_argument_value_impl<bool>" ); static literal_cstring YES( BOOST_RT_PARAM_CSTRING_LITERAL( "YES" ) ); static literal_cstring Y( BOOST_RT_PARAM_CSTRING_LITERAL( "Y" ) ); static literal_cstring NO( BOOST_RT_PARAM_CSTRING_LITERAL( "NO" ) ); static literal_cstring N( BOOST_RT_PARAM_CSTRING_LITERAL( "N" ) ); static literal_cstring one( BOOST_RT_PARAM_CSTRING_LITERAL( "1" ) ); static literal_cstring zero( BOOST_RT_PARAM_CSTRING_LITERAL( "0" ) ); source.trim(); if( case_ins_eq( source, YES ) || case_ins_eq( source, Y ) || case_ins_eq( source, one ) ) { res = true; return true; } else if( case_ins_eq( source, NO ) || case_ins_eq( source, N ) || case_ins_eq( source, zero ) ) { res = false; return true; } else { res = true; return false; } }