/* A thread-safe version of Boost.Signals. Author: Frank Mori Hess Begin: 2007-01-23 */ // Copyright Frank Mori Hess 2007-2008 // Use, modification and // distribution is subject to the Boost Software License, Version // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // For more information, see http://www.boost.org #ifndef BOOST_SIGNALS2_PREPROCESSED_SIGNAL_HPP #define BOOST_SIGNALS2_PREPROCESSED_SIGNAL_HPP #include #include #include #include #include #include #include #include #include #define BOOST_PP_ITERATION_LIMITS (0, BOOST_SIGNALS2_MAX_ARGS) #define BOOST_PP_FILENAME_1 #include BOOST_PP_ITERATE() namespace boost { namespace signals2 { template::result_type>, typename Group = int, typename GroupCompare = std::less, typename SlotFunction = function, typename ExtendedSlotFunction = typename detail::extended_signature::arity, Signature>::function_type, typename Mutex = mutex > class signal: public detail::signalN::arity, Signature, Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::type { private: typedef typename detail::signalN::arity, Signature, Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::type base_type; public: signal(const Combiner &combiner_arg = Combiner(), const GroupCompare &group_compare = GroupCompare()): base_type(combiner_arg, group_compare) {} #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_WORKAROUND(BOOST_MSVC, < 1800) signal(signal && other) : base_type(std::move(other)) {} signal & operator=(signal && other) { base_type::operator=(std::move(other)); return *this; } #endif }; } } #endif // BOOST_SIGNALS2_PREPROCESSED_SIGNAL_HPP