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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user