diff options
author | Murray Cumming <murrayc@murrayc.com> | 2016-03-31 14:46:34 +0200 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2016-11-14 10:43:21 +0100 |
commit | b38fa51048ca6ac22140ac6193fea489a70b7032 (patch) | |
tree | 18038309312478eba9e9e21d7ef612f6bb568f3f | |
parent | c5684c38a6964251beb47e57a1549351f0b89c08 (diff) | |
download | glibmm-b38fa51048ca6ac22140ac6193fea489a70b7032.tar.gz |
sigc3: SignalProxy: Use R(Args...) syntax.
Including using this in gmmproc.
-rw-r--r-- | gio/src/application.ccg | 4 | ||||
-rw-r--r-- | gio/src/application.hg | 2 | ||||
-rw-r--r-- | glib/glibmm/signalproxy.h | 14 | ||||
-rw-r--r-- | 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<void, const Application::type_vec_files&, const Glib::ustring&> +Glib::SignalProxy<void(const Application::type_vec_files&, const Glib::ustring&)> Application::signal_open() { - return Glib::SignalProxy<void, const Application::type_vec_files&, const Glib::ustring&>( + return Glib::SignalProxy<void(const Application::type_vec_files&, const Glib::ustring&)>( this, &Application_signal_open_info); } diff --git a/gio/src/application.hg b/gio/src/application.hg index 626fa66b..2d051184 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<void(const type_vec_files&, const Glib::ustring&)> signal_open(); _IGNORE_SIGNAL(open) #m4 _CONVERSION(`GApplicationCommandLine*', `const Glib::RefPtr<ApplicationCommandLine>&',`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 R, class... T> -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 R, class... T> +class SignalProxy<R(T...)> : public SignalProxyNormal { public: using SlotType = sigc::slot<R(T...)>; @@ -281,7 +288,10 @@ private: * to connect signal handlers to signals. */ template <class R, class... T> -class SignalProxyDetailedAnyType : public SignalProxyDetailed +class SignalProxyDetailedAnyType; + +template <class R, class... T> +class SignalProxyDetailedAnyType<R(T...)> : public SignalProxyDetailed { public: using SlotType = sigc::slot<R(T...)>; 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 |