123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- #ifndef BOOST_SIGNALS2_SIGNALS_COMMON_MACROS_HPP
- #define BOOST_SIGNALS2_SIGNALS_COMMON_MACROS_HPP
- #include <boost/config.hpp>
- #ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
- #ifndef BOOST_SIGNALS2_MAX_ARGS
- #define BOOST_SIGNALS2_MAX_ARGS 9
- #endif
- #define BOOST_SIGNALS2_SIGNAL_CLASS_NAME(arity) BOOST_PP_CAT(signal, arity)
- #define BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(arity) BOOST_PP_CAT(weak_, BOOST_SIGNALS2_SIGNAL_CLASS_NAME(arity))
- #define BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(arity) BOOST_PP_CAT(BOOST_SIGNALS2_SIGNAL_CLASS_NAME(arity), _impl)
- #define BOOST_SIGNALS2_SIGNATURE_ARG_NAME(z, n, data) BOOST_PP_CAT(arg, BOOST_PP_INC(n))
- #define BOOST_SIGNALS2_SIGNATURE_FULL_ARG(z, n, data) \
- BOOST_PP_CAT(T, BOOST_PP_INC(n)) BOOST_SIGNALS2_SIGNATURE_ARG_NAME(~, n, ~)
- #define BOOST_SIGNALS2_SIGNATURE_FULL_ARGS(arity) \
- BOOST_PP_ENUM(arity, BOOST_SIGNALS2_SIGNATURE_FULL_ARG, ~)
- #define BOOST_SIGNALS2_SIGNATURE_ARG_NAMES(arity) BOOST_PP_ENUM(arity, BOOST_SIGNALS2_SIGNATURE_ARG_NAME, ~)
- #define BOOST_SIGNALS2_ARGS_TEMPLATE_INSTANTIATION(arity) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), T)
- #define BOOST_SIGNALS2_SIGNATURE_FUNCTION_TYPE(arity) \
- R ( BOOST_SIGNALS2_ARGS_TEMPLATE_INSTANTIATION(arity) )
- #define BOOST_SIGNALS2_PREFIXED_SIGNATURE_TEMPLATE_DECL(arity, prefix) \
- typename BOOST_PP_CAT(prefix, R) BOOST_PP_COMMA_IF(arity) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), typename BOOST_PP_CAT(prefix, T))
- #define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity) \
- typename R BOOST_PP_COMMA_IF(arity) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), typename T)
- #define BOOST_SIGNALS2_PREFIXED_ARGS_TEMPLATE_DECL(arity, prefix) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), typename BOOST_PP_CAT(prefix, T))
- #define BOOST_SIGNALS2_ARGS_TEMPLATE_DECL(arity) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), typename T)
- #define BOOST_SIGNALS2_PREFIXED_SIGNATURE_TEMPLATE_INSTANTIATION(arity, prefix) \
- BOOST_PP_CAT(prefix, R) BOOST_PP_COMMA_IF(arity) BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), BOOST_PP_CAT(prefix, T))
- #define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_INSTANTIATION(arity) \
- R BOOST_PP_COMMA_IF(arity) BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), T)
- #define BOOST_SIGNALS2_FUNCTION_N_DECL(arity) BOOST_PP_CAT(boost::function, arity)<\
- BOOST_SIGNALS2_SIGNATURE_TEMPLATE_INSTANTIATION(arity) >
- #define BOOST_SIGNALS2_EXT_SLOT_TEMPLATE_INSTANTIATION(arity) \
- R, const boost::signals2::connection& BOOST_PP_COMMA_IF(arity) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), T)
- #define BOOST_SIGNALS2_EXT_FUNCTION_N_DECL(arity) BOOST_PP_CAT(boost::function, BOOST_PP_INC(arity))<\
- BOOST_SIGNALS2_EXT_SLOT_TEMPLATE_INSTANTIATION(arity) >
- #define BOOST_SIGNALS2_SLOT_CLASS_NAME(arity) BOOST_PP_CAT(slot, arity)
- #define BOOST_SIGNALS2_EXTENDED_SLOT_TYPE(arity) \
- BOOST_SIGNALS2_SLOT_CLASS_NAME(BOOST_PP_INC(arity))< \
- BOOST_SIGNALS2_EXT_SLOT_TEMPLATE_INSTANTIATION(arity), \
- extended_slot_function_type>
- #define BOOST_SIGNALS2_BOUND_EXTENDED_SLOT_FUNCTION_N(arity) BOOST_PP_CAT(bound_extended_slot_function, arity)
- #define BOOST_SIGNALS2_BOUND_EXTENDED_SLOT_FUNCTION_INVOKER_N(arity) BOOST_PP_CAT(bound_extended_slot_function_invoker, arity)
- #define BOOST_SIGNALS2_SIGNATURE_TO_ARGN_TYPE(z, n, Signature) \
- BOOST_PP_CAT(BOOST_PP_CAT(typename function_traits<Signature>::arg, BOOST_PP_INC(n)), _type)
- #define BOOST_SIGNALS2_PORTABLE_SIGNATURE(arity, Signature) \
- typename function_traits<Signature>::result_type \
- BOOST_PP_COMMA_IF(arity) BOOST_PP_ENUM(arity, BOOST_SIGNALS2_SIGNATURE_TO_ARGN_TYPE, Signature)
- #define BOOST_SIGNALS2_PREFIXED_FULL_REF_ARG(z, n, prefix) \
- BOOST_PP_CAT(BOOST_PP_CAT(prefix, T), BOOST_PP_INC(n)) & BOOST_SIGNALS2_SIGNATURE_ARG_NAME(~, n, ~)
- #define BOOST_SIGNALS2_PREFIXED_FULL_REF_ARGS(arity, prefix) \
- BOOST_PP_ENUM(arity, BOOST_SIGNALS2_PREFIXED_FULL_REF_ARG, prefix)
- #define BOOST_SIGNALS2_FULL_CREF_ARG(z, n, data) \
- const BOOST_PP_CAT(T, BOOST_PP_INC(n)) & BOOST_SIGNALS2_SIGNATURE_ARG_NAME(~, n, ~)
- #define BOOST_SIGNALS2_FULL_FORWARD_ARGS(arity) \
- BOOST_PP_ENUM(arity, BOOST_SIGNALS2_FULL_CREF_ARG, ~)
- #define BOOST_SIGNALS2_FORWARDED_ARGS(arity) \
- BOOST_SIGNALS2_SIGNATURE_ARG_NAMES(arity)
- #define BOOST_SIGNALS2_PREPROCESSED_ARG_N_TYPE_CLASS_NAME(arity) BOOST_PP_CAT(preprocessed_arg_type, arity)
- #define BOOST_SIGNALS2_SLOT_TEMPLATE_SPECIALIZATION_DECL(arity) \
- BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity), \
- typename SlotFunction
- #define BOOST_SIGNALS2_SLOT_TEMPLATE_SPECIALIZATION
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(arity) \
- BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity), \
- typename Combiner, \
- typename Group, \
- typename GroupCompare, \
- typename SlotFunction, \
- typename ExtendedSlotFunction, \
- typename Mutex
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_DEFAULTED_DECL(arity) \
- BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity), \
- typename Combiner = optional_last_value<R>, \
- typename Group = int, \
- typename GroupCompare = std::less<Group>, \
- typename SlotFunction = BOOST_SIGNALS2_FUNCTION_N_DECL(arity), \
- typename ExtendedSlotFunction = BOOST_SIGNALS2_EXT_FUNCTION_N_DECL(arity), \
- typename Mutex = signals2::mutex
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_SPECIALIZATION_DECL(arity) BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(arity)
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_SPECIALIZATION
- #define BOOST_SIGNALS2_STD_FUNCTIONAL_BASE std_functional_base
- #define BOOST_SIGNALS2_PP_COMMA_IF(arity) BOOST_PP_COMMA_IF(arity)
- #else
- #define BOOST_SIGNALS2_SIGNAL_CLASS_NAME(arity) signal
- #define BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(arity) weak_signal
- #define BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(arity) signal_impl
- #define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity) typename Signature
- #define BOOST_SIGNALS2_ARGS_TEMPLATE_INSTANTIATION(arity) Args...
- #define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_INSTANTIATION(arity) R (Args...)
- #define BOOST_SIGNALS2_SIGNATURE_FUNCTION_TYPE(arity) R (Args...)
- #define BOOST_SIGNALS2_ARGS_TEMPLATE_DECL(arity) typename ... Args
- #define BOOST_SIGNALS2_FULL_FORWARD_ARGS(arity) Args && ... args
- #define BOOST_SIGNALS2_FORWARDED_ARGS(arity) std::forward<Args>(args)...
- #define BOOST_SIGNALS2_SLOT_CLASS_NAME(arity) slot
- #define BOOST_SIGNALS2_EXTENDED_SLOT_TYPE(arity) slot<R (const connection &, Args...), extended_slot_function_type>
- #define BOOST_SIGNALS2_BOUND_EXTENDED_SLOT_FUNCTION_N(arity) bound_extended_slot_function
- #define BOOST_SIGNALS2_BOUND_EXTENDED_SLOT_FUNCTION_INVOKER_N(arity) bound_extended_slot_function_invoker
- #define BOOST_SIGNALS2_FUNCTION_N_DECL(arity) boost::function<Signature>
- #define BOOST_SIGNALS2_PREFIXED_SIGNATURE_TEMPLATE_DECL(arity, prefix) typename prefixSignature
- #define BOOST_SIGNALS2_PREFIXED_SIGNATURE_TEMPLATE_INSTANTIATION(arity, prefix) prefixSignature
- #define BOOST_SIGNALS2_SIGNATURE_FULL_ARGS(arity) Args ... args
- #define BOOST_SIGNALS2_SIGNATURE_ARG_NAMES(arity) args...
- #define BOOST_SIGNALS2_PORTABLE_SIGNATURE(arity, Signature) Signature
- #define BOOST_SIGNALS2_SLOT_TEMPLATE_SPECIALIZATION_DECL(arity) \
- typename SlotFunction, \
- typename R, \
- typename ... Args
- #define BOOST_SIGNALS2_SLOT_TEMPLATE_SPECIALIZATION \
- <R (Args...), SlotFunction>
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(arity) \
- typename Signature, \
- typename Combiner, \
- typename Group, \
- typename GroupCompare, \
- typename SlotFunction, \
- typename ExtendedSlotFunction, \
- typename Mutex
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_DEFAULTED_DECL(arity) \
- typename Signature, \
- typename Combiner = optional_last_value<typename boost::function_traits<Signature>::result_type>, \
- typename Group = int, \
- typename GroupCompare = std::less<Group>, \
- typename SlotFunction = boost::function<Signature>, \
- typename ExtendedSlotFunction = typename detail::variadic_extended_signature<Signature>::function_type, \
- typename Mutex = signals2::mutex
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_SPECIALIZATION_DECL(arity) \
- typename Combiner, \
- typename Group, \
- typename GroupCompare, \
- typename SlotFunction, \
- typename ExtendedSlotFunction, \
- typename Mutex, \
- typename R, \
- typename ... Args
- #define BOOST_SIGNALS2_SIGNAL_TEMPLATE_SPECIALIZATION <\
- R (Args...), \
- Combiner, \
- Group, \
- GroupCompare, \
- SlotFunction, \
- ExtendedSlotFunction, \
- Mutex>
- #define BOOST_SIGNALS2_STD_FUNCTIONAL_BASE \
- std_functional_base<Args...>
- #define BOOST_SIGNALS2_PP_COMMA_IF(arity) ,
- #endif
- #endif
|