summaryrefslogtreecommitdiffstats
path: root/async/src/async.h
diff options
context:
space:
mode:
Diffstat (limited to 'async/src/async.h')
-rw-r--r--async/src/async.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/async/src/async.h b/async/src/async.h
index 8523df3..95b28d7 100644
--- a/async/src/async.h
+++ b/async/src/async.h
@@ -66,11 +66,6 @@ class ExecutorBase;
66typedef QSharedPointer<ExecutorBase> ExecutorBasePtr; 66typedef QSharedPointer<ExecutorBase> ExecutorBasePtr;
67 67
68 68
69template<typename ... T>
70struct PreviousOut {
71 using type = typename std::tuple_element<0, std::tuple<T ..., void>>::type;
72};
73
74class ExecutorBase 69class ExecutorBase
75{ 70{
76 template<typename PrevOut, typename Out, typename ... In> 71 template<typename PrevOut, typename Out, typename ... In>
@@ -113,7 +108,7 @@ protected:
113}; 108};
114 109
115template<typename Out, typename ... In> 110template<typename Out, typename ... In>
116class ThenExecutor: public Executor<typename PreviousOut<In ...>::type, Out, In ...> 111class ThenExecutor: public Executor<typename detail::prevOut<In ...>::type, Out, In ...>
117{ 112{
118public: 113public:
119 ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); 114 ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent);
@@ -139,7 +134,7 @@ public:
139}; 134};
140 135
141template<typename Out, typename ... In> 136template<typename Out, typename ... In>
142class SyncThenExecutor : public Executor<typename PreviousOut<In ...>::type, Out, In ...> 137class SyncThenExecutor : public Executor<typename detail::prevOut<In ...>::type, Out, In ...>
143{ 138{
144public: 139public:
145 SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); 140 SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent);
@@ -430,7 +425,7 @@ void Executor<PrevOut, Out, In ...>::exec()
430 425
431template<typename Out, typename ... In> 426template<typename Out, typename ... In>
432ThenExecutor<Out, In ...>::ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler error, const ExecutorBasePtr &parent) 427ThenExecutor<Out, In ...>::ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler error, const ExecutorBasePtr &parent)
433 : Executor<typename PreviousOut<In ...>::type, Out, In ...>(error, parent) 428 : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(error, parent)
434{ 429{
435 this->mFunc = then; 430 this->mFunc = then;
436} 431}
@@ -492,7 +487,7 @@ ReduceExecutor<Out, In>::ReduceExecutor(ReduceTask<Out, In> reduce, ErrorHandler
492 487
493template<typename Out, typename ... In> 488template<typename Out, typename ... In>
494SyncThenExecutor<Out, In ...>::SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent) 489SyncThenExecutor<Out, In ...>::SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent)
495 : Executor<typename PreviousOut<In ...>::type, Out, In ...>(errorHandler, parent) 490 : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(errorHandler, parent)
496{ 491{
497 this->mFunc = then; 492 this->mFunc = then;
498} 493}