-template<typename R>
-class Signal0 {
-public:
- Signal0 () {}
- typedef boost::signals2::signal<R()> SignalType;
-
- void connect_same_thread (Connection& c,
- const typename SignalType::slot_function_type& slot) {
- c = _signal.connect (slot);
- }
-
- void connect_same_thread (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot) {
- clist.add_connection (_signal.connect (slot));
- }
-
- void connect (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- clist.add_connection (_signal.connect (boost::bind (&EventLoop::call_slot, event_loop, slot)));
- }
-
- void connect (Connection& c,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- c = _signal.connect (boost::bind (&EventLoop::call_slot, event_loop, slot));
- }
-
- typename SignalType::result_type operator()() {
- return _signal ();
- }
-
-private:
- SignalType _signal;
-};
-
-template<typename R, typename A>
-class Signal1 {
-public:
- Signal1 () {}
- typedef boost::signals2::signal<R(A)> SignalType;
-
- void connect_same_thread (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot) {
- clist.add_connection (_signal.connect (slot));
- }
-
- void connect_same_thread (Connection& c,
- const typename SignalType::slot_function_type& slot) {
- c = _signal.connect (slot);
- }
-
- static void compositor (typename boost::function<void(A)> f, EventLoop* event_loop, A arg) {
- event_loop->call_slot (boost::bind (f, arg));
- }
-
- void connect (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- clist.add_connection (_signal.connect (boost::bind (&compositor, slot, event_loop, _1)));
- }
-
- void connect (Connection& c,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- c = _signal.connect (boost::bind (&compositor, slot, event_loop, _1));
-
- }
-
- typename SignalType::result_type operator()(A arg1) {
- return _signal (arg1);
- }
-
-private:
- SignalType _signal;
-};
-
-template<typename R, typename A1, typename A2>
-class Signal2 {
-public:
- Signal2 () {}
- typedef boost::signals2::signal<R(A1, A2)> SignalType;
-
- void connect_same_thread (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot) {
- clist.add_connection (_signal.connect (slot));
- }
-
- void connect_same_thread (Connection& c,
- const typename SignalType::slot_function_type& slot) {
- c = _signal.connect (slot);
- }
-
- static void compositor (typename boost::function<void(A1,A2)> f, PBD::EventLoop* event_loop, A1 arg1, A2 arg2) {
- event_loop->call_slot (boost::bind (f, arg1, arg2));
- }
-
- void connect (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- clist.add_connection (_signal.connect (boost::bind (&compositor, slot, event_loop, _1, _2)));
- }
-
- void connect (Connection& c,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- c = _signal.connect (boost::bind (&compositor, slot, event_loop, _1, _2));
- }
-
- typename SignalType::result_type operator()(A1 arg1, A2 arg2) {
- return _signal (arg1, arg2);
- }
-
-private:
- SignalType _signal;
-};
-
-template<typename R, typename A1, typename A2, typename A3>
-class Signal3 {
-public:
- Signal3 () {}
- typedef boost::signals2::signal<R(A1,A2,A3)> SignalType;
-
- void connect_same_thread (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot) {
- clist.add_connection (_signal.connect (slot));
- }
-
- void connect_same_thread (Connection& c,
- const typename SignalType::slot_function_type& slot) {
- c = _signal.connect (slot);
- }
-
- static void compositor (typename boost::function<void(A1,A2,A3)> f, PBD::EventLoop* event_loop, A1 arg1, A2 arg2, A3 arg3) {
- event_loop->call_slot (boost::bind (f, arg1, arg2, arg3));
- }
-
- void connect (ScopedConnectionList& clist,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- clist.add_connection (_signal.connect (boost::bind (&compositor, slot, event_loop, _1, _2, _3)));
- }
-
- void connect (Connection& c,
- const typename SignalType::slot_function_type& slot,
- PBD::EventLoop* event_loop) {
- c = _signal.connect (_signal.connect (boost::bind (&compositor, slot, event_loop, _1, _2, _3)));
- }
-
- typename SignalType::result_type operator()(A1 arg1, A2 arg2, A3 arg3) {
- return _signal (arg1, arg2, arg3);
- }
-
-private:
- SignalType _signal;
-};