5 #ifndef _SIGXMACROS_SIGNAL_WRAPPER_H_
6 #define _SIGXMACROS_SIGNAL_WRAPPER_H_
28 #include <sigc++/sigc++.h>
29 #include <glibmm/main.h>
54 template<
typename T_signal>
64 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
76 template<
typename T_return,
typename T_accumulator>
86 template<
typename T_return,
typename T_arg1,
typename T_accumulator>
96 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_accumulator>
106 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_accumulator>
116 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_accumulator>
126 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_accumulator>
136 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_accumulator>
146 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7,
typename T_accumulator>
147 struct count_signal_arguments<sigc::signal7<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator> >
157 template<
typename T_return>
169 template<
typename T_return,
typename T_arg1>
181 template<
typename T_return,
typename T_arg1,
typename T_arg2>
193 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3>
205 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
217 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
229 template<
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
290 class signal_wrapper;
296 template<
typename T_signal>
301 static const int argument_count = 0;
304 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
311 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
312 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
313 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
333 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
363 template<
typename T_functor>
368 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
374 template<sync_type I_sync>
377 return open_tunnel_with<I_sync>(
380 sigc::mem_fun(&signal_type::emit),
383 sigc::retype_return<fp_sig_getter_type>(
390 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
403 return emit<ASYNC>();
417 return emit<ASYNC>();
423 template<sync_type I_sync>
424 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
426 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
427 return tunnel_funtor_type(
434 sigc::retype_return<fp_sig_getter_type>(
438 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
450 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
452 return make_slot<ASYNC>();
458 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
460 return make_slot<SYNC>();
468 template<
typename T_signal>
473 static const int argument_count = 1;
476 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
484 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
485 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
486 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
506 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
536 template<
typename T_functor>
541 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
547 template<sync_type I_sync>
550 return open_tunnel_with<I_sync>(
553 sigc::mem_fun(&signal_type::emit),
556 sigc::retype_return<fp_sig_getter_type>(
563 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
576 return emit<ASYNC>(_A_a1);
583 return emit<SYNC>(_A_a1);
590 return emit<ASYNC>(_A_a1);
596 template<sync_type I_sync>
597 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
599 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
600 return tunnel_funtor_type(
607 sigc::retype_return<fp_sig_getter_type>(
611 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
623 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
625 return make_slot<ASYNC>();
631 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
633 return make_slot<SYNC>();
641 template<
typename T_signal>
646 static const int argument_count = 2;
649 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
658 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
659 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
660 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
680 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
710 template<
typename T_functor>
715 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
721 template<sync_type I_sync>
724 return open_tunnel_with<I_sync>(
727 sigc::mem_fun(&signal_type::emit),
730 sigc::retype_return<fp_sig_getter_type>(
737 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
750 return emit<ASYNC>(_A_a1, _A_a2);
757 return emit<SYNC>(_A_a1, _A_a2);
764 return emit<ASYNC>(_A_a1, _A_a2);
770 template<sync_type I_sync>
771 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
773 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
774 return tunnel_funtor_type(
781 sigc::retype_return<fp_sig_getter_type>(
785 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
797 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
799 return make_slot<ASYNC>();
805 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
807 return make_slot<SYNC>();
815 template<
typename T_signal>
820 static const int argument_count = 3;
823 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
833 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
834 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
835 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
855 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
885 template<
typename T_functor>
890 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
896 template<sync_type I_sync>
899 return open_tunnel_with<I_sync>(
902 sigc::mem_fun(&signal_type::emit),
905 sigc::retype_return<fp_sig_getter_type>(
912 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
918 )(_A_a1, _A_a2, _A_a3);
925 return emit<ASYNC>(_A_a1, _A_a2, _A_a3);
932 return emit<SYNC>(_A_a1, _A_a2, _A_a3);
939 return emit<ASYNC>(_A_a1, _A_a2, _A_a3);
945 template<sync_type I_sync>
946 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
948 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
949 return tunnel_funtor_type(
956 sigc::retype_return<fp_sig_getter_type>(
960 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
972 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
974 return make_slot<ASYNC>();
980 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
982 return make_slot<SYNC>();
990 template<
typename T_signal>
995 static const int argument_count = 4;
998 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1009 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
1010 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
1011 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
1031 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
1061 template<
typename T_functor>
1066 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
1072 template<sync_type I_sync>
1075 return open_tunnel_with<I_sync>(
1078 sigc::mem_fun(&signal_type::emit),
1081 sigc::retype_return<fp_sig_getter_type>(
1088 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1094 )(_A_a1, _A_a2, _A_a3, _A_a4);
1101 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4);
1108 return emit<SYNC>(_A_a1, _A_a2, _A_a3, _A_a4);
1115 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4);
1121 template<sync_type I_sync>
1122 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
1124 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
1125 return tunnel_funtor_type(
1132 sigc::retype_return<fp_sig_getter_type>(
1136 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1148 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
1150 return make_slot<ASYNC>();
1156 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
1158 return make_slot<SYNC>();
1166 template<
typename T_signal>
1171 static const int argument_count = 5;
1174 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1186 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
1187 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
1188 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
1208 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
1238 template<
typename T_functor>
1243 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
1249 template<sync_type I_sync>
1252 return open_tunnel_with<I_sync>(
1255 sigc::mem_fun(&signal_type::emit),
1258 sigc::retype_return<fp_sig_getter_type>(
1265 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1271 )(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5);
1278 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5);
1285 return emit<SYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5);
1292 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5);
1298 template<sync_type I_sync>
1299 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
1301 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
1302 return tunnel_funtor_type(
1309 sigc::retype_return<fp_sig_getter_type>(
1313 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1325 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
1327 return make_slot<ASYNC>();
1333 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
1335 return make_slot<SYNC>();
1343 template<
typename T_signal>
1348 static const int argument_count = 6;
1351 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1364 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
1365 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
1366 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
1369 typedef sigc::const_mem_functor6<result_type, signal_type, arg1_type_, arg2_type_, arg3_type_, arg4_type_, arg5_type_, arg6_type_>
make_slot_emit_functor_type;
1386 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
1416 template<
typename T_functor>
1421 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
1427 template<sync_type I_sync>
1430 return open_tunnel_with<I_sync>(
1433 sigc::mem_fun(&signal_type::emit),
1436 sigc::retype_return<fp_sig_getter_type>(
1443 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1449 )(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6);
1456 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6);
1463 return emit<SYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6);
1470 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6);
1476 template<sync_type I_sync>
1477 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
1479 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
1480 return tunnel_funtor_type(
1487 sigc::retype_return<fp_sig_getter_type>(
1491 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1503 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
1505 return make_slot<ASYNC>();
1511 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
1513 return make_slot<SYNC>();
1521 template<
typename T_signal>
1526 static const int argument_count = 7;
1529 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1543 typedef sigc::bound_const_mem_functor0<signal_source_base::hook, signal_source_base>
make_slot_f1;
1544 typedef sigc::retype_return_functor<fp_sig_getter_type, make_slot_f1>
make_slot_f2;
1545 typedef sigc::const_mem_functor0<signal_source_ptr, std::tr1::shared_ptr<signal_source_base> >
make_slot_f3;
1548 typedef sigc::const_mem_functor7<result_type, signal_type, arg1_type_, arg2_type_, arg3_type_, arg4_type_, arg5_type_, arg6_type_, arg7_type_>
make_slot_emit_functor_type;
1565 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource)
throw():
1595 template<
typename T_functor>
1600 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect)
1606 template<sync_type I_sync>
1609 return open_tunnel_with<I_sync>(
1612 sigc::mem_fun(&signal_type::emit),
1615 sigc::retype_return<fp_sig_getter_type>(
1622 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1628 )(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7);
1635 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7);
1642 return emit<SYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7);
1649 return emit<ASYNC>(_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7);
1655 template<sync_type I_sync>
1656 tunnel_functor<I_sync, make_slot_functor_type> make_slot()
const
1658 typedef tunnel_functor<I_sync, make_slot_functor_type> tunnel_funtor_type;
1659 return tunnel_funtor_type(
1666 sigc::retype_return<fp_sig_getter_type>(
1670 sigc::mem_fun(&std::tr1::shared_ptr<signal_source_base>::operator *),
1682 tunnel_functor<ASYNC, make_slot_functor_type> make_slot()
const
1684 return make_slot<ASYNC>();
1690 tunnel_functor<SYNC, make_slot_functor_type> make_slot_sync()
const
1692 return make_slot<SYNC>();
1702 template<
typename T_signal>
1711 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1729 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource):
1759 template<
typename T_functor>
1765 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect),
1775 template<
typename T_functor>
1781 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect_notify),
1799 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1816 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource):
1846 template<
typename T_functor>
1852 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect),
1870 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1887 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource):
1917 template<
typename T_functor>
1919 int priority = Glib::PRIORITY_DEFAULT)
const
1924 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect),
1942 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
1959 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource):
1989 template<
typename T_functor>
1991 int priority = Glib::PRIORITY_DEFAULT)
const
1996 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect),
2014 typedef signal_wrapper<signal_type, signal_group, argument_count>
this_type;
2031 signal_wrapper(
const shared_dispatchable& _A_disp,
const std::tr1::shared_ptr<signal_source_base>& _A_sigsource):
2061 template<
typename T_functor>
2063 int priority = Glib::PRIORITY_DEFAULT)
const
2068 sigc::ptr_fun(&typed_connection_handler<signal_type, signal_group>::connect),