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