linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #01810
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2215: revert 2211.1.3 - VS doesn't support variadic templates
------------------------------------------------------------
revno: 2215
committer: poy <poy@xxxxxxxxxx>
branch nick: repo
timestamp: Sun 2010-08-29 14:07:28 +0200
message:
revert 2211.1.3 - VS doesn't support variadic templates
modified:
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 'dcpp/Speaker.h'
--- dcpp/Speaker.h 2010-08-27 14:57:49 +0000
+++ dcpp/Speaker.h 2010-08-29 12:07:28 +0000
@@ -31,12 +31,68 @@
Speaker() throw() { }
virtual ~Speaker() throw() { }
- template<typename... T>
- void fire(T&&... type) throw() {
- Lock l(listenerCS);
- tmp = listeners;
- for(auto i = tmp.begin(); i != tmp.end(); ++i) {
- (*i)->on(forward<T>(type)...);
+ /// @todo simplify when we have variadic templates
+
+ template<typename T0>
+ void fire(T0&& type) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*i)->on(forward<T0>(type));
+ }
+ }
+
+ template<typename T0, typename T1>
+ void fire(T0&& type, T1&& p1) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*i)->on(forward<T0>(type), forward<T1>(p1));
+ }
+ }
+
+ template<typename T0, typename T1, typename T2>
+ void fire(T0&& type, T1&& p1, T2&& p2) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*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) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*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) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*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) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*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) throw() {
+ Lock l(listenerCS);
+ tmp = listeners;
+ for(auto i = tmp.begin(); i != tmp.end(); ++i) {
+ (*i)->on(forward<T0>(type), forward<T1>(p1), forward<T2>(p2), forward<T3>(p3), forward<T4>(p4), forward<T5>(p5), forward<T6>(p6));
}
}