From d4bc378ecfd7b546ce0299e8c3e73232a692fe76 Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Wed, 15 Feb 2012 17:06:17 +0200 Subject: Add a non-numbered version of signal and some convenience stuff for connecting --- sigslot.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/sigslot.h b/sigslot.h index 22a4aad..5d9db9d 100644 --- a/sigslot.h +++ b/sigslot.h @@ -2701,6 +2701,89 @@ namespace sigslot { } }; +namespace impl +{ + +struct empty {}; + +} // namespace impl + +// signal can be used instead of the numbered signalN classes. +// For example: +// +// sigslot::signal signal; +// +// instead of +// +// sigslot::signal2 signal; +template +struct signal; + +template<> +struct signal<>: public signal0<> +{}; + +template +struct signal: public signal1 +{}; + +template +struct signal: public signal2 +{}; + +template +struct signal: public signal3 +{}; + +template +struct signal: public signal4 +{}; + +template +struct signal: public signal5 +{}; + +template +struct signal: public signal6 +{}; + +template +struct signal: + public signal7 +{}; + +template +struct signal: public signal8 +{}; + +// Some convenience methods for signal handling. +template +struct has_signals +{ + virtual ~has_signals() {} + + // Connect a signal to a slot on the specified destination object. + template + static inline void connect(Signal &signal, Dst *dst, Sig memfun) + { + signal.connect(dst, memfun); + } + + // Connect a signal to a slot on 'this'. + template + inline void connect(Signal &signal, Sig memfun) + { + Derived* dst = static_cast(this); + connect(signal, dst, memfun); + } +}; + }; // namespace sigslot #endif // __SIGSLOT_H__ -- cgit v1.2.3