From d79bb19dae44bfdc9da7f294dd03f3b62c5cb282 Mon Sep 17 00:00:00 2001 From: Zach Laine Date: Sat, 3 Dec 2016 23:40:48 -0600 Subject: [PATCH] Reduce macro noise in operators.hpp. --- boost/yap/operators.hpp | 197 ++++++++++++++++++++-------------------- 1 file changed, 96 insertions(+), 101 deletions(-) diff --git a/boost/yap/operators.hpp b/boost/yap/operators.hpp index 2d22846..ab78696 100644 --- a/boost/yap/operators.hpp +++ b/boost/yap/operators.hpp @@ -2,10 +2,14 @@ #define BOOST_YAP_OPERATORS_HPP_INCLUDED -#ifndef BOOST_YAP_DOXYGEN - namespace boost { namespace yap { +#ifdef BOOST_YAP_DOXYGEN + +// TODO + +#else + #define BOOST_YAP_NOEXCEPT_DECLTYPE_RETURN(expr) \ noexcept(noexcept(expr)) -> decltype(expr) { return expr; } @@ -158,111 +162,102 @@ namespace boost { namespace yap { #undef BOOST_YAP_NOEXCEPT_DECLTYPE_RETURN -#define BOOST_YAP_USING_OPERATOR_FN(op_name) using adl_detail::eval_ ## op_name ## _fn; - - BOOST_YAP_USING_OPERATOR_FN(unary_plus) // + - BOOST_YAP_USING_OPERATOR_FN(negate) // - - BOOST_YAP_USING_OPERATOR_FN(dereference) // * - BOOST_YAP_USING_OPERATOR_FN(complement) // ~ - BOOST_YAP_USING_OPERATOR_FN(address_of) // & - BOOST_YAP_USING_OPERATOR_FN(logical_not) // ! - BOOST_YAP_USING_OPERATOR_FN(pre_inc) // ++ - BOOST_YAP_USING_OPERATOR_FN(pre_dec) // -- - BOOST_YAP_USING_OPERATOR_FN(post_inc) // ++(int) - BOOST_YAP_USING_OPERATOR_FN(post_dec) // --(int) - BOOST_YAP_USING_OPERATOR_FN(shift_left) // << - BOOST_YAP_USING_OPERATOR_FN(shift_right) // >> - BOOST_YAP_USING_OPERATOR_FN(multiplies) // * - BOOST_YAP_USING_OPERATOR_FN(divides) // / - BOOST_YAP_USING_OPERATOR_FN(modulus) // % - BOOST_YAP_USING_OPERATOR_FN(plus) // + - BOOST_YAP_USING_OPERATOR_FN(minus) // - - BOOST_YAP_USING_OPERATOR_FN(less) // < - BOOST_YAP_USING_OPERATOR_FN(greater) // > - BOOST_YAP_USING_OPERATOR_FN(less_equal) // <= - BOOST_YAP_USING_OPERATOR_FN(greater_equal) // >= - BOOST_YAP_USING_OPERATOR_FN(equal_to) // == - BOOST_YAP_USING_OPERATOR_FN(not_equal_to) // != - BOOST_YAP_USING_OPERATOR_FN(logical_or) // || - BOOST_YAP_USING_OPERATOR_FN(logical_and) // && - BOOST_YAP_USING_OPERATOR_FN(bitwise_and) // & - BOOST_YAP_USING_OPERATOR_FN(bitwise_or) // | - BOOST_YAP_USING_OPERATOR_FN(bitwise_xor) // ^ - BOOST_YAP_USING_OPERATOR_FN(comma) // , - BOOST_YAP_USING_OPERATOR_FN(mem_ptr) // ->* - BOOST_YAP_USING_OPERATOR_FN(assign) // = - BOOST_YAP_USING_OPERATOR_FN(shift_left_assign) // <<= - BOOST_YAP_USING_OPERATOR_FN(shift_right_assign) // >>= - BOOST_YAP_USING_OPERATOR_FN(multiplies_assign) // *= - BOOST_YAP_USING_OPERATOR_FN(divides_assign) // /= - BOOST_YAP_USING_OPERATOR_FN(modulus_assign) // %= - BOOST_YAP_USING_OPERATOR_FN(plus_assign) // += - BOOST_YAP_USING_OPERATOR_FN(minus_assign) // -= - BOOST_YAP_USING_OPERATOR_FN(bitwise_and_assign) // &= - BOOST_YAP_USING_OPERATOR_FN(bitwise_or_assign) // |= - BOOST_YAP_USING_OPERATOR_FN(bitwise_xor_assign) // ^= - BOOST_YAP_USING_OPERATOR_FN(subscript) // [] - BOOST_YAP_USING_OPERATOR_FN(if_else) // (analogous to) ?: - BOOST_YAP_USING_OPERATOR_FN(call) // () - -#undef BOOST_YAP_USING_OPERATOR_FN + using adl_detail::eval_unary_plus_fn; // + + using adl_detail::eval_negate_fn; // - + using adl_detail::eval_dereference_fn; // * + using adl_detail::eval_complement_fn; // ~ + using adl_detail::eval_address_of_fn; // & + using adl_detail::eval_logical_not_fn; // ! + using adl_detail::eval_pre_inc_fn; // ++ + using adl_detail::eval_pre_dec_fn; // -- + using adl_detail::eval_post_inc_fn; // ++(int) + using adl_detail::eval_post_dec_fn; // --(int) + using adl_detail::eval_shift_left_fn; // << + using adl_detail::eval_shift_right_fn; // >> + using adl_detail::eval_multiplies_fn; // * + using adl_detail::eval_divides_fn; // / + using adl_detail::eval_modulus_fn; // % + using adl_detail::eval_plus_fn; // + + using adl_detail::eval_minus_fn; // - + using adl_detail::eval_less_fn; // < + using adl_detail::eval_greater_fn; // > + using adl_detail::eval_less_equal_fn; // <= + using adl_detail::eval_greater_equal_fn; // >= + using adl_detail::eval_equal_to_fn; // == + using adl_detail::eval_not_equal_to_fn; // != + using adl_detail::eval_logical_or_fn; // || + using adl_detail::eval_logical_and_fn; // && + using adl_detail::eval_bitwise_and_fn; // & + using adl_detail::eval_bitwise_or_fn; // | + using adl_detail::eval_bitwise_xor_fn; // ^ + using adl_detail::eval_comma_fn; // , + using adl_detail::eval_mem_ptr_fn; // ->* + using adl_detail::eval_assign_fn; // = + using adl_detail::eval_shift_left_assign_fn; // <<= + using adl_detail::eval_shift_right_assign_fn; // >>= + using adl_detail::eval_multiplies_assign_fn; // *= + using adl_detail::eval_divides_assign_fn; // /= + using adl_detail::eval_modulus_assign_fn; // %= + using adl_detail::eval_plus_assign_fn; // += + using adl_detail::eval_minus_assign_fn; // -= + using adl_detail::eval_bitwise_and_assign_fn; // &= + using adl_detail::eval_bitwise_or_assign_fn; // |= + using adl_detail::eval_bitwise_xor_assign_fn; // ^= + using adl_detail::eval_subscript_fn; // [] + using adl_detail::eval_if_else_fn; // (analogous to) ?: + using adl_detail::eval_call_fn; // () inline namespace function_objects { -#define BOOST_YAP_DECLARE_OPERATOR_FN(op_name) \ - inline constexpr eval_ ## op_name ## _fn eval_ ## op_name{}; - - BOOST_YAP_DECLARE_OPERATOR_FN(unary_plus) // + - BOOST_YAP_DECLARE_OPERATOR_FN(negate) // - - BOOST_YAP_DECLARE_OPERATOR_FN(dereference) // * - BOOST_YAP_DECLARE_OPERATOR_FN(complement) // ~ - BOOST_YAP_DECLARE_OPERATOR_FN(address_of) // & - BOOST_YAP_DECLARE_OPERATOR_FN(logical_not) // ! - BOOST_YAP_DECLARE_OPERATOR_FN(pre_inc) // ++ - BOOST_YAP_DECLARE_OPERATOR_FN(pre_dec) // -- - BOOST_YAP_DECLARE_OPERATOR_FN(post_inc) // ++(int) - BOOST_YAP_DECLARE_OPERATOR_FN(post_dec) // --(int) - BOOST_YAP_DECLARE_OPERATOR_FN(shift_left) // << - BOOST_YAP_DECLARE_OPERATOR_FN(shift_right) // >> - BOOST_YAP_DECLARE_OPERATOR_FN(multiplies) // * - BOOST_YAP_DECLARE_OPERATOR_FN(divides) // / - BOOST_YAP_DECLARE_OPERATOR_FN(modulus) // % - BOOST_YAP_DECLARE_OPERATOR_FN(plus) // + - BOOST_YAP_DECLARE_OPERATOR_FN(minus) // - - BOOST_YAP_DECLARE_OPERATOR_FN(less) // < - BOOST_YAP_DECLARE_OPERATOR_FN(greater) // > - BOOST_YAP_DECLARE_OPERATOR_FN(less_equal) // <= - BOOST_YAP_DECLARE_OPERATOR_FN(greater_equal) // >= - BOOST_YAP_DECLARE_OPERATOR_FN(equal_to) // == - BOOST_YAP_DECLARE_OPERATOR_FN(not_equal_to) // != - BOOST_YAP_DECLARE_OPERATOR_FN(logical_or) // || - BOOST_YAP_DECLARE_OPERATOR_FN(logical_and) // && - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_and) // & - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_or) // | - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_xor) // ^ - BOOST_YAP_DECLARE_OPERATOR_FN(comma) // , - BOOST_YAP_DECLARE_OPERATOR_FN(mem_ptr) // ->* - BOOST_YAP_DECLARE_OPERATOR_FN(assign) // = - BOOST_YAP_DECLARE_OPERATOR_FN(shift_left_assign) // <<= - BOOST_YAP_DECLARE_OPERATOR_FN(shift_right_assign) // >>= - BOOST_YAP_DECLARE_OPERATOR_FN(multiplies_assign) // *= - BOOST_YAP_DECLARE_OPERATOR_FN(divides_assign) // /= - BOOST_YAP_DECLARE_OPERATOR_FN(modulus_assign) // %= - BOOST_YAP_DECLARE_OPERATOR_FN(plus_assign) // += - BOOST_YAP_DECLARE_OPERATOR_FN(minus_assign) // -= - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_and_assign) // &= - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_or_assign) // |= - BOOST_YAP_DECLARE_OPERATOR_FN(bitwise_xor_assign) // ^= - BOOST_YAP_DECLARE_OPERATOR_FN(subscript) // [] - BOOST_YAP_DECLARE_OPERATOR_FN(if_else) // (analogous to) ?: - BOOST_YAP_DECLARE_OPERATOR_FN(call) // () - -#undef BOOST_YAP_DECLARE_OPERATOR_FN + inline constexpr eval_unary_plus_fn eval_unary_plus{}; // + + inline constexpr eval_negate_fn eval_negate{}; // - + inline constexpr eval_dereference_fn eval_dereference{}; // * + inline constexpr eval_complement_fn eval_complement{}; // ~ + inline constexpr eval_address_of_fn eval_address_of{}; // & + inline constexpr eval_logical_not_fn eval_logical_not{}; // ! + inline constexpr eval_pre_inc_fn eval_pre_inc{}; // ++ + inline constexpr eval_pre_dec_fn eval_pre_dec{}; // -- + inline constexpr eval_post_inc_fn eval_post_inc{}; // ++(int) + inline constexpr eval_post_dec_fn eval_post_dec{}; // --(int) + inline constexpr eval_shift_left_fn eval_shift_left{}; // << + inline constexpr eval_shift_right_fn eval_shift_right{}; // >> + inline constexpr eval_multiplies_fn eval_multiplies{}; // * + inline constexpr eval_divides_fn eval_divides{}; // / + inline constexpr eval_modulus_fn eval_modulus{}; // % + inline constexpr eval_plus_fn eval_plus{}; // + + inline constexpr eval_minus_fn eval_minus{}; // - + inline constexpr eval_less_fn eval_less{}; // < + inline constexpr eval_greater_fn eval_greater{}; // > + inline constexpr eval_less_equal_fn eval_less_equal{}; // <= + inline constexpr eval_greater_equal_fn eval_greater_equal{}; // >= + inline constexpr eval_equal_to_fn eval_equal_to{}; // == + inline constexpr eval_not_equal_to_fn eval_not_equal_to{}; // != + inline constexpr eval_logical_or_fn eval_logical_or{}; // || + inline constexpr eval_logical_and_fn eval_logical_and{}; // && + inline constexpr eval_bitwise_and_fn eval_bitwise_and{}; // & + inline constexpr eval_bitwise_or_fn eval_bitwise_or{}; // | + inline constexpr eval_bitwise_xor_fn eval_bitwise_xor{}; // ^ + inline constexpr eval_comma_fn eval_comma{}; // , + inline constexpr eval_mem_ptr_fn eval_mem_ptr{}; // ->* + inline constexpr eval_assign_fn eval_assign{}; // = + inline constexpr eval_shift_left_assign_fn eval_shift_left_assign{}; // <<= + inline constexpr eval_shift_right_assign_fn eval_shift_right_assign{}; // >>= + inline constexpr eval_multiplies_assign_fn eval_multiplies_assign{}; // *= + inline constexpr eval_divides_assign_fn eval_divides_assign{}; // /= + inline constexpr eval_modulus_assign_fn eval_modulus_assign{}; // %= + inline constexpr eval_plus_assign_fn eval_plus_assign{}; // += + inline constexpr eval_minus_assign_fn eval_minus_assign{}; // -= + inline constexpr eval_bitwise_and_assign_fn eval_bitwise_and_assign{}; // &= + inline constexpr eval_bitwise_or_assign_fn eval_bitwise_or_assign{}; // |= + inline constexpr eval_bitwise_xor_assign_fn eval_bitwise_xor_assign{}; // ^= + inline constexpr eval_subscript_fn eval_subscript{}; // [] + inline constexpr eval_if_else_fn eval_if_else{}; // (analogous to) ?: + inline constexpr eval_call_fn eval_call{}; // () } -} } - #endif // BOOST_YAP_DOXYGEN +} } + #endif