2
0
mirror of https://github.com/boostorg/yap.git synced 2026-02-26 05:12:13 +00:00

Reduce macro noise in operators.hpp.

This commit is contained in:
Zach Laine
2016-12-03 23:40:48 -06:00
parent c4413f0dd0
commit d79bb19dae

View File

@@ -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