2 #ifndef _YI_STATIC_TASK_H_ 3 #define _YI_STATIC_TASK_H_ 36 template <
typename ResultType =
void>
49 template <
typename P1>
56 template <
typename P1,
typename P2>
63 template <
typename P1,
typename P2,
typename P3>
70 template <
typename P1,
typename P2,
typename P3,
typename P4>
71 CYIStaticTask(
CYIFuture<ResultType> &rFuture, ResultType (*
const pFunc)(P1, P2, P3, P4), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3, P4
const &funcParam4);
89 template<
typename P1,
typename P2>
96 template<
typename P1,
typename P2,
typename P3>
97 CYIStaticTask(std::unique_ptr<
CYIFuture<ResultType>> pFuture, ResultType (*
const pFunc)(P1, P2, P3), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3);
103 template<
typename P1,
typename P2,
typename P3,
typename P4>
104 CYIStaticTask(std::unique_ptr<
CYIFuture<ResultType>> pFuture, ResultType (*
const pFunc)(P1, P2, P3, P4), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3, P4
const &funcParam4);
115 template <
typename P1>
116 CYIStaticTask(ResultType (*
const pFunc)(P1), P1
const &funcParam1);
122 template <
typename P1,
typename P2>
123 CYIStaticTask(ResultType (*
const pFunc)(P1, P2), P1
const &funcParam1, P2
const &funcParam2);
129 template <
typename P1,
typename P2,
typename P3>
130 CYIStaticTask(ResultType (*
const pFunc)(P1, P2, P3), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3);
136 template <
typename P1,
typename P2,
typename P3,
typename P4>
137 CYIStaticTask(ResultType (*
const pFunc)(P1, P2, P3, P4), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3, P4
const &funcParam4);
148 virtual ResultType
Run()
override;
154 class CYIStaticTaskDataBase
157 virtual ~CYIStaticTaskDataBase();
158 virtual const ResultType ExecuteFunction() = 0;
162 CYIStaticTaskDataBase *m_pFunctionData;
165 class CYIStaticTaskData0Args :
public CYIStaticTaskDataBase
168 CYIStaticTaskData0Args(ResultType (*
const pFunc)());
169 virtual const ResultType ExecuteFunction()
override;
172 ResultType (*m_pFunc)();
175 template <
typename P1>
176 class CYIStaticTaskData1Arg :
public CYIStaticTaskDataBase
179 CYIStaticTaskData1Arg(ResultType (*
const pFunc)(P1), P1
const &funcParam1);
180 virtual const ResultType ExecuteFunction()
override;
183 ResultType (*m_pFunc)(P1);
187 template <
typename P1,
typename P2>
188 class CYIStaticTaskData2Args :
public CYIStaticTaskDataBase
191 CYIStaticTaskData2Args(ResultType (*
const pFunc)(P1, P2), P1
const &funcParam1, P2
const &funcParam2);
192 virtual const ResultType ExecuteFunction()
override;
195 ResultType (*m_pFunc)(P1, P2);
200 template <
typename P1,
typename P2,
typename P3>
201 class CYIStaticTaskData3Args :
public CYIStaticTaskDataBase
204 CYIStaticTaskData3Args(ResultType (*
const pFunc)(P1, P2, P3), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3);
205 virtual const ResultType ExecuteFunction()
override;
208 ResultType (*m_pFunc)(P1, P2, P3);
214 template <
typename P1,
typename P2,
typename P3,
typename P4>
215 class CYIStaticTaskData4Args :
public CYIStaticTaskDataBase
218 CYIStaticTaskData4Args(ResultType (*
const pFunc)(P1, P2, P3, P4), P1
const &funcParam1, P2
const &funcParam2, P3
const &funcParam3, P4
const &funcParam4);
219 virtual const ResultType ExecuteFunction()
override;
222 ResultType (*m_pFunc)(P1, P2, P3, P4);
234 #include "YiStaticTask.inl" 236 #endif // _YI_STATIC_TASK_H_ Definition: YiStaticTask.h:37
Definition: YiFuture.h:139
virtual ResultType Run() override
CYIStaticTask(CYIFuture< ResultType > &rFuture, ResultType(*const pFunc)())