← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3377: re-apply rev 2211.1.3

 

------------------------------------------------------------
revno: 3377
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2013-12-06 21:58:25 +0100
message:
  re-apply rev 2211.1.3
modified:
  SConstruct
  dcpp/Speaker.h


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'SConstruct'
--- SConstruct	2013-12-06 00:08:00 +0000
+++ SConstruct	2013-12-06 20:58:25 +0000
@@ -67,7 +67,6 @@
 	'release' : []
 }
 
-# TODO remove _VARIADIC_MAX if/when VC has proper variadic template support
 msvc_defs = {
 	'common' : ['_REENTRANT', 'snprintf=_snprintf'],
 	'debug' : ['_DEBUG', '_HAS_ITERATOR_DEBUGGING=0', '_SECURE_SCL=0'],

=== modified file 'dcpp/Speaker.h'
--- dcpp/Speaker.h	2013-12-06 00:08:00 +0000
+++ dcpp/Speaker.h	2013-12-06 20:58:25 +0000
@@ -39,68 +39,12 @@
 	Speaker() noexcept { }
 	virtual ~Speaker() { }
 
-	/// @todo simplify when we have variadic templates
-
-	template<typename T0>
-	void fire(T0&& type) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type));
-		}
-	}
-
-	template<typename T0, typename T1>
-	void fire(T0&& type, T1&& p1) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1));
-		}
-	}
-
-	template<typename T0, typename T1, typename T2>
-	void fire(T0&& type, T1&& p1, T2&& p2) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2));
-		}
-	}
-
-	template<typename T0, typename T1, typename T2, typename T3>
-	void fire(T0&& type, T1&& p1, T2&& p2, T3&& p3) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2), forward<T3>(p3));
-		}
-	}
-
-	template<typename T0, typename T1, typename T2, typename T3, typename T4>
-	void fire(T0&& type, T1&& p1, T2&& p2, T3&& p3, T4&& p4) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2), forward<T3>(p3), forward<T4>(p4));
-		}
-	}
-
-	template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
-	void fire(T0&& type, T1&& p1, T2&& p2, T3&& p3, T4&& p4, T5&& p5) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2), forward<T3>(p3), forward<T4>(p4), forward<T5>(p5));
-		}
-	}
-
-	template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
-	void fire(T0&& type, T1&& p1, T2&& p2, T3&& p3, T4&& p4, T5&& p5, T6&& p6) noexcept {
-		Lock l(listenerCS);
-		tmp = listeners;
-		for(auto i: tmp) {
-			i->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2), forward<T3>(p3), forward<T4>(p4), forward<T5>(p5), forward<T6>(p6));
+	template<typename... T>
+	void fire(T&&... type) noexcept {
+		Lock l(listenerCS);
+		tmp = listeners;
+		for(auto i: tmp) {
+			i->on(forward<T>(type)...);
 		}
 	}