From 4cc45b2164f0a48bb04d37bcf5afdd81788bd41d Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Thu, 31 Mar 2016 14:46:34 +0200 Subject: sigc3: SignalProxy: Use R(Args...) syntax. Including using this in gmmproc. --- gio/src/application.ccg | 4 ++-- gio/src/application.hg | 2 +- glib/glibmm/signalproxy.h | 14 ++++++++++++-- tools/m4/signal.m4 | 24 ++++++++++++------------ 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/gio/src/application.ccg b/gio/src/application.ccg index 75e876d6..785d050b 100644 --- a/gio/src/application.ccg +++ b/gio/src/application.ccg @@ -352,10 +352,10 @@ Application_Class::open_callback(GApplication* self, GFile** files, gint n_files (*base->open)(self, files, n_files, hint); } -Glib::SignalProxy +Glib::SignalProxy Application::signal_open() { - return Glib::SignalProxy( + return Glib::SignalProxy( this, &Application_signal_open_info); } diff --git a/gio/src/application.hg b/gio/src/application.hg index 05455164..e4da2db8 100644 --- a/gio/src/application.hg +++ b/gio/src/application.hg @@ -380,7 +380,7 @@ public: //We wrap the open signal without _WRAP_SIGNAL(), because we need to change its parameters. //See bug https://bugzilla.gnome.org/show_bug.cgi?id=637457 - Glib::SignalProxy< void, const type_vec_files&, const Glib::ustring& > signal_open(); + Glib::SignalProxy signal_open(); _IGNORE_SIGNAL(open) #m4 _CONVERSION(`GApplicationCommandLine*', `const Glib::RefPtr&',`Glib::wrap($3, true)') diff --git a/glib/glibmm/signalproxy.h b/glib/glibmm/signalproxy.h index 7916123d..8aae39d9 100644 --- a/glib/glibmm/signalproxy.h +++ b/glib/glibmm/signalproxy.h @@ -150,7 +150,14 @@ private: * to connect signal handlers to signals. */ template -class SignalProxy : public SignalProxyNormal +class SignalProxy; + +/** Proxy for signals with any number of arguments. + * Use the connect() or connect_notify() method, with sigc::mem_fun() or sigc::ptr_fun() + * to connect signal handlers to signals. + */ +template +class SignalProxy : public SignalProxyNormal { public: using SlotType = sigc::slot; @@ -281,7 +288,10 @@ private: * to connect signal handlers to signals. */ template -class SignalProxyDetailedAnyType : public SignalProxyDetailed +class SignalProxyDetailedAnyType; + +template +class SignalProxyDetailedAnyType : public SignalProxyDetailed { public: using SlotType = sigc::slot; diff --git a/tools/m4/signal.m4 b/tools/m4/signal.m4 index b1a53bcd..d121b15f 100644 --- a/tools/m4/signal.m4 +++ b/tools/m4/signal.m4 @@ -24,17 +24,17 @@ ifelse(`$9',,,`_DEPRECATE_IFDEF_START ')dnl ifelse($13,,`dnl no detail_name $10 - Glib::SignalProxy< $5`'_COMMA_PREFIX($6) > signal_$4`'(); + Glib::SignalProxy<$5`'($6)> signal_$4`'(); ',dnl detail_name $14,0,`dnl $10 - Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) > signal_$4`'(const Glib::ustring& $13 = Glib::ustring()); + Glib::SignalProxyDetailedAnyType<$5`'($6)> signal_$4`'(const Glib::ustring& $13 = Glib::ustring()); ',`dnl detail_name and two_signal_methods $10 - Glib::SignalProxy< $5`'_COMMA_PREFIX($6) > signal_$4`'(); + Glib::SignalProxy<$5`'($6)> signal_$4`'(); $10 - Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) > signal_$4`'(const Glib::ustring& $13); + Glib::SignalProxyDetailedAnyType<$5`'($6)> signal_$4`'(const Glib::ustring& $13); ')dnl end detail_name ifelse(`$9',,,`_DEPRECATE_IFDEF_END ')dnl @@ -161,25 +161,25 @@ ifelse(`$11',,,`#ifdef $11' ifelse(`$9',,,`_DEPRECATE_IFDEF_START ')dnl ifelse($13,,`dnl no detail_name -Glib::SignalProxy< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'() +Glib::SignalProxy<$5`'($6)> __CPPNAME__::signal_$4`'() { - return Glib::SignalProxy< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info); + return Glib::SignalProxy<$5`'($6) >(this, &__CPPNAME__`'_signal_$4_info); } ',dnl detail_name $14,0,`dnl -Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'(const Glib::ustring& $13) +Glib::SignalProxyDetailedAnyType<$5`'($6)> __CPPNAME__::signal_$4`'(const Glib::ustring& $13) { - return Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info, $13); + return Glib::SignalProxyDetailedAnyType<$5`'($6)>(this, &__CPPNAME__`'_signal_$4_info, $13); } ',`dnl detail_name and two_signal_methods -Glib::SignalProxy< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'() +Glib::SignalProxy<$5`'($6)> __CPPNAME__::signal_$4`'() { - return Glib::SignalProxy< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info); + return Glib::SignalProxy<$5`'($6)>(this, &__CPPNAME__`'_signal_$4_info); } -Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'(const Glib::ustring& $13) +Glib::SignalProxyDetailedAnyType<$5`'($6)> __CPPNAME__::signal_$4`'(const Glib::ustring& $13) { - return Glib::SignalProxyDetailedAnyType< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info, $13); + return Glib::SignalProxyDetailedAnyType<$5`'($6)>(this, &__CPPNAME__`'_signal_$4_info, $13); } ')dnl end detail_name ifelse(`$9',,,`_DEPRECATE_IFDEF_END -- cgit v1.2.1