00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SAGA_CALL_HPP
00009 #define SAGA_CALL_HPP
00010
00011 #include <saga/saga/task.hpp>
00012
00014
00016
00017
00018
00019
00021
00022
00023
00025
00026
00027 #define SAGA_CALL_PUB_0_DEF_0(name) \
00028 template <typename Tag> \
00029 saga::task name() \
00030 { return name ## priv(Tag()); } \
00031 //-----------------------------------------------------------------------------
00032
00033
00034 #define SAGA_CALL_CONST_PUB_0_DEF_0(name) \
00035 template <typename Tag> \
00036 saga::task name() const \
00037 { return name ## priv(Tag()); } \
00038 //-----------------------------------------------------------------------------
00039
00040
00041 #define SAGA_CALL_CREATE_0_DEF_0() \
00042 template <typename Tag> \
00043 static saga::task create() \
00044 { return createpriv(Tag()); } \
00045 //-----------------------------------------------------------------------------
00046
00047
00048 #define SAGA_CALL_PRIV_0(name) \
00049 saga::task name ## priv (saga::task_base::Sync); \
00050 saga::task name ## priv (saga::task_base::Async); \
00051 saga::task name ## priv (saga::task_base::Task); \
00052 //-----------------------------------------------------------------------------
00053 #define SAGA_CALL_CONST_PRIV_0(name) \
00054 saga::task name ## priv (saga::task_base::Sync) const; \
00055 saga::task name ## priv (saga::task_base::Async) const; \
00056 saga::task name ## priv (saga::task_base::Task) const; \
00057 //-----------------------------------------------------------------------------
00058 #define SAGA_CALL_CREATE_PRIV_0() \
00059 static saga::task createpriv (saga::task_base::Sync); \
00060 static saga::task createpriv (saga::task_base::Async); \
00061 static saga::task createpriv (saga::task_base::Task); \
00062 //-----------------------------------------------------------------------------
00063
00065
00066
00067
00069
00070
00071 #define SAGA_CALL_PUB_1_DEF_0(name, p1) \
00072 template <typename Tag> \
00073 saga::task name (p1 par1) \
00074 { return (name ## priv (par1, Tag())); } \
00075 //-----------------------------------------------------------------------------
00076 #define SAGA_CALL_PUB_1_DEF_1(name, p1, d1) \
00077 template <typename Tag> \
00078 saga::task name (p1 par1 = d1) \
00079 { return (name ## priv (par1, Tag())); } \
00080 //-----------------------------------------------------------------------------
00081
00082
00083 #define SAGA_CALL_CONST_PUB_1_DEF_0(name, p1) \
00084 template <typename Tag> \
00085 saga::task name (p1 par1) const \
00086 { return (name ## priv (par1, Tag())); } \
00087 //-----------------------------------------------------------------------------
00088 #define SAGA_CALL_CONST_PUB_1_DEF_1(name, p1, d1) \
00089 template <typename Tag> \
00090 saga::task name (p1 par1 = d1) const \
00091 { return (name ## priv (par1, Tag())); } \
00092 //-----------------------------------------------------------------------------
00093
00094
00095 #define SAGA_CALL_CREATE_1_DEF_0(p1) \
00096 template <typename Tag> \
00097 static saga::task create (p1 par1) \
00098 { return (createpriv (par1, Tag())); } \
00099 //-----------------------------------------------------------------------------
00100 #define SAGA_CALL_CREATE_1_DEF_1(p1, d1) \
00101 template <typename Tag> \
00102 static saga::task create (p1 par1 = d1) \
00103 { return (createpriv (par1, Tag())); } \
00104 //-----------------------------------------------------------------------------
00105
00106
00107 #define SAGA_CALL_PRIV_1(name, p1) \
00108 saga::task name ## priv (p1 par1, saga::task_base::Sync); \
00109 saga::task name ## priv (p1 par1, saga::task_base::Async); \
00110 saga::task name ## priv (p1 par1, saga::task_base::Task); \
00111 //-----------------------------------------------------------------------------
00112 #define SAGA_CALL_CONST_PRIV_1(name, p1) \
00113 saga::task name ## priv (p1 par1, saga::task_base::Sync) const; \
00114 saga::task name ## priv (p1 par1, saga::task_base::Async) const; \
00115 saga::task name ## priv (p1 par1, saga::task_base::Task) const; \
00116 //-----------------------------------------------------------------------------
00117 #define SAGA_CALL_CREATE_PRIV_1(p1) \
00118 static saga::task createpriv (p1 par1, saga::task_base::Sync); \
00119 static saga::task createpriv (p1 par1, saga::task_base::Async); \
00120 static saga::task createpriv (p1 par1, saga::task_base::Task); \
00121 //-----------------------------------------------------------------------------
00122
00124
00125
00126
00128
00129
00130 #define SAGA_CALL_PUB_2_DEF_0(name, p1, p2) \
00131 template <typename Tag> \
00132 saga::task name (p1 par1, p2 par2) \
00133 { return (name ## priv (par1, par2, Tag())); } \
00134 //-----------------------------------------------------------------------------
00135 #define SAGA_CALL_PUB_2_DEF_1(name, p1, p2, d2) \
00136 template <typename Tag> \
00137 saga::task name (p1 par1, p2 par2 = d2) \
00138 { return (name ## priv (par1, par2, Tag())); } \
00139 //-----------------------------------------------------------------------------
00140 #define SAGA_CALL_PUB_2_DEF_2(name, p1, d1, p2, d2) \
00141 template <typename Tag> \
00142 saga::task name (p1 par1 = d1, p2 par2 = d2) \
00143 { return (name ## priv (par1, par2, Tag())); } \
00144 //-----------------------------------------------------------------------------
00145
00146
00147 #define SAGA_CALL_CONST_PUB_2_DEF_0(name, p1, p2) \
00148 template <typename Tag> \
00149 saga::task name (p1 par1, p2 par2) const \
00150 { return (name ## priv (par1, par2, Tag())); } \
00151 //-----------------------------------------------------------------------------
00152 #define SAGA_CALL_CONST_PUB_2_DEF_1(name, p1, p2, d2) \
00153 template <typename Tag> \
00154 saga::task name (p1 par1, p2 par2 = d2) const \
00155 { return (name ## priv (par1, par2, Tag())); } \
00156 //-----------------------------------------------------------------------------
00157 #define SAGA_CALL_CONST_PUB_2_DEF_2(name, p1, d1, p2, d2) \
00158 template <typename Tag> \
00159 saga::task name (p1 par1 = d1, p2 par2 = d2) const \
00160 { return (name ## priv (par1, par2, Tag())); } \
00161 //-----------------------------------------------------------------------------
00162
00163
00164 #define SAGA_CALL_CREATE_2_DEF_0(p1, p2) \
00165 template <typename Tag> \
00166 static saga::task create (p1 par1, p2 par2) \
00167 { return (createpriv (par1, par2, Tag())); } \
00168 //-----------------------------------------------------------------------------
00169 #define SAGA_CALL_CREATE_2_DEF_1(p1, p2, d2) \
00170 template <typename Tag> \
00171 static saga::task create (p1 par1, p2 par2 = d2) \
00172 { return (createpriv (par1, par2, Tag())); } \
00173 //-----------------------------------------------------------------------------
00174 #define SAGA_CALL_CREATE_2_DEF_2(p1, d1, p2, d2) \
00175 template <typename Tag> \
00176 static saga::task create (p1 par1 = d1, p2 par2 = d2) \
00177 { return (createpriv (par1, par2, Tag())); } \
00178 //-----------------------------------------------------------------------------
00179
00180
00181 #define SAGA_CALL_PRIV_2(name, p1, p2) \
00182 saga::task name ## priv (p1, p2, saga::task_base::Sync); \
00183 saga::task name ## priv (p1, p2, saga::task_base::Async); \
00184 saga::task name ## priv (p1, p2, saga::task_base::Task); \
00185 //-----------------------------------------------------------------------------
00186 #define SAGA_CALL_CONST_PRIV_2(name, p1, p2) \
00187 saga::task name ## priv (p1, p2, saga::task_base::Sync) const; \
00188 saga::task name ## priv (p1, p2, saga::task_base::Async) const; \
00189 saga::task name ## priv (p1, p2, saga::task_base::Task) const; \
00190 //-----------------------------------------------------------------------------
00191 #define SAGA_CALL_CREATE_PRIV_2(p1, p2) \
00192 static saga::task createpriv (p1, p2, saga::task_base::Sync); \
00193 static saga::task createpriv (p1, p2, saga::task_base::Async); \
00194 static saga::task createpriv (p1, p2, saga::task_base::Task); \
00195 //-----------------------------------------------------------------------------
00196
00198
00199
00200
00202
00203
00204 #define SAGA_CALL_PUB_3_DEF_0(name, p1, p2, p3) \
00205 template <typename Tag> \
00206 saga::task name (p1 par1, p2 par2, p3 par3) \
00207 { return (name ## priv (par1, par2, par3, Tag())); } \
00208 //-----------------------------------------------------------------------------
00209 #define SAGA_CALL_PUB_3_DEF_1(name, p1, p2, p3, d3) \
00210 template <typename Tag> \
00211 saga::task name (p1 par1, p2 par2, p3 par3 = d3) \
00212 { return (name ## priv (par1, par2, par3, Tag())); } \
00213 //-----------------------------------------------------------------------------
00214 #define SAGA_CALL_PUB_3_DEF_2(name, p1, p2, d2, p3, d3) \
00215 template <typename Tag> \
00216 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3) \
00217 { return (name ## priv (par1, par2, par3, Tag())); } \
00218 //-----------------------------------------------------------------------------
00219 #define SAGA_CALL_PUB_3_DEF_3(name, p1, d1, p2, d2, p3, d3) \
00220 template <typename Tag> \
00221 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3) \
00222 { return (name ## priv (par1, par2, par3, Tag())); } \
00223 //-----------------------------------------------------------------------------
00224
00225
00226 #define SAGA_CALL_CONST_PUB_3_DEF_0(name, p1, p2, p3) \
00227 template <typename Tag> \
00228 saga::task name (p1 par1, p2 par2, p3 par3) \
00229 { return (name ## priv (par1, par2, par3, Tag())); } \
00230 //-----------------------------------------------------------------------------
00231 #define SAGA_CALL_CONST_PUB_3_DEF_1(name, p1, p2, p3, d3) \
00232 template <typename Tag> \
00233 saga::task name (p1 par1, p2 par2, p3 par3 = d3) const \
00234 { return (name ## priv (par1, par2, par3, Tag())); } \
00235 //-----------------------------------------------------------------------------
00236 #define SAGA_CALL_CONST_PUB_3_DEF_2(name, p1, p2, d2, p3, d3) \
00237 template <typename Tag> \
00238 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3) const \
00239 { return (name ## priv (par1, par2, par3, Tag())); } \
00240 //-----------------------------------------------------------------------------
00241 #define SAGA_CALL_CONST_PUB_3_DEF_3(name, p1, d1, p2, d2, p3, d3) \
00242 template <typename Tag> \
00243 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3) const \
00244 { return (name ## priv (par1, par2, par3, Tag())); } \
00245 //-----------------------------------------------------------------------------
00246
00247
00248 #define SAGA_CALL_CREATE_3_DEF_0(p1, p2, p3) \
00249 template <typename Tag> \
00250 static saga::task create (p1 par1, p2 par2, p3 par3) \
00251 { return (createpriv (par1, par2, par3, Tag())); } \
00252 //-----------------------------------------------------------------------------
00253 #define SAGA_CALL_CREATE_3_DEF_1(p1, p2, p3, d3) \
00254 template <typename Tag> \
00255 static saga::task create (p1 par1, p2 par2, p3 par3 = d3) \
00256 { return (createpriv (par1, par2, par3, Tag())); } \
00257 //-----------------------------------------------------------------------------
00258 #define SAGA_CALL_CREATE_3_DEF_2(p1, p2, d2, p3, d3) \
00259 template <typename Tag> \
00260 static saga::task create (p1 par1, p2 par2 = d2, p3 par3 = d3) \
00261 { return (createpriv (par1, par2, par3, Tag())); } \
00262 //-----------------------------------------------------------------------------
00263 #define SAGA_CALL_CREATE_3_DEF_3(p1, d1, p2, d2, p3, d3) \
00264 template <typename Tag> \
00265 static saga::task create (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3) \
00266 { return (createpriv (par1, par2, par3, Tag())); } \
00267 //-----------------------------------------------------------------------------
00268
00269
00270 #define SAGA_CALL_PRIV_3(name, p1, p2, p3) \
00271 saga::task name ## priv (p1, p2, p3, saga::task_base::Sync); \
00272 saga::task name ## priv (p1, p2, p3, saga::task_base::Async); \
00273 saga::task name ## priv (p1, p2, p3, saga::task_base::Task); \
00274 //-----------------------------------------------------------------------------
00275 #define SAGA_CALL_CONST_PRIV_3(name, p1, p2, p3) \
00276 saga::task name ## priv (p1, p2, p3, saga::task_base::Sync) const; \
00277 saga::task name ## priv (p1, p2, p3, saga::task_base::Async) const; \
00278 saga::task name ## priv (p1, p2, p3, saga::task_base::Task) const; \
00279 //-----------------------------------------------------------------------------
00280 #define SAGA_CALL_CREATE_PRIV_3(p1, p2, p3) \
00281 static saga::task createpriv (p1, p2, p3, saga::task_base::Sync); \
00282 static saga::task createpriv (p1, p2, p3, saga::task_base::Async); \
00283 static saga::task createpriv (p1, p2, p3, saga::task_base::Task); \
00284 //-----------------------------------------------------------------------------
00285
00287
00288
00289
00291
00292
00293 #define SAGA_CALL_PUB_4_DEF_0(name, p1, p2, p3, p4) \
00294 template <typename Tag> \
00295 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4) \
00296 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00297 //-----------------------------------------------------------------------------
00298 #define SAGA_CALL_PUB_4_DEF_1(name, p1, p2, p3, p4, d4) \
00299 template <typename Tag> \
00300 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4 = d4) \
00301 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00302 //-----------------------------------------------------------------------------
00303 #define SAGA_CALL_PUB_4_DEF_2(name, p1, p2, p3, d3, p4, d4) \
00304 template <typename Tag> \
00305 saga::task name (p1 par1, p2 par2, p3 par3 = d3, p4 par4 = d4) \
00306 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00307 //-----------------------------------------------------------------------------
00308 #define SAGA_CALL_PUB_4_DEF_3(name, p1, p2, d2, p3, d3, p4, d4) \
00309 template <typename Tag> \
00310 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00311 p4 par4 = d4) \
00312 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00313 //-----------------------------------------------------------------------------
00314 #define SAGA_CALL_PUB_4_DEF_4(name, p1, d1, p2, d2, p3, d3, p4, d4) \
00315 template <typename Tag> \
00316 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00317 p4 par4 = d4) \
00318 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00319 //-----------------------------------------------------------------------------
00320
00321
00322 #define SAGA_CALL_CONST_PUB_4_DEF_0(name, p1, p2, p3, p4) \
00323 template <typename Tag> \
00324 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4) const \
00325 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00326 //-----------------------------------------------------------------------------
00327 #define SAGA_CALL_CONST_PUB_4_DEF_1(name, p1, p2, p3, p4, d4) \
00328 template <typename Tag> \
00329 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4 = d4) const \
00330 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00331 //-----------------------------------------------------------------------------
00332 #define SAGA_CALL_CONST_PUB_4_DEF_2(name, p1, p2, p3, d3, p4, d4) \
00333 template <typename Tag> \
00334 saga::task name (p1 par1, p2 par2, p3 par3 = d3, p4 par4 = d4) const \
00335 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00336 //-----------------------------------------------------------------------------
00337 #define SAGA_CALL_CONST_PUB_4_DEF_3(name, p1, p2, d2, p3, d3, p4, d4) \
00338 template <typename Tag> \
00339 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00340 p4 par4 = d4) const \
00341 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00342 //-----------------------------------------------------------------------------
00343 #define SAGA_CALL_CONST_PUB_4_DEF_4(name, p1, d1, p2, d2, p3, d3, p4, d4) \
00344 template <typename Tag> \
00345 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00346 p4 par4 = d4) const \
00347 { return (name ## priv (par1, par2, par3, par4, Tag())); } \
00348 //-----------------------------------------------------------------------------
00349
00350
00351 #define SAGA_CALL_CREATE_4_DEF_0(p1, p2, p3, p4) \
00352 template <typename Tag> \
00353 static saga::task create (p1 par1, p2 par2, p3 par3, p4 par4) \
00354 { return (createpriv (par1, par2, par3, par4, Tag())); } \
00355 //-----------------------------------------------------------------------------
00356 #define SAGA_CALL_CREATE_4_DEF_1(p1, p2, p3, p4, d4) \
00357 template <typename Tag> \
00358 static saga::task create (p1 par1, p2 par2, p3 par3, p4 par4 = d4) \
00359 { return (createpriv (par1, par2, par3, par4, Tag())); } \
00360 //-----------------------------------------------------------------------------
00361 #define SAGA_CALL_CREATE_4_DEF_2(p1, p2, p3, d3, p4, d4) \
00362 template <typename Tag> \
00363 static saga::task create (p1 par1, p2 par2, p3 par3 = d3, p4 par4 = d4) \
00364 { return (createpriv (par1, par2, par3, par4, Tag())); } \
00365 //-----------------------------------------------------------------------------
00366 #define SAGA_CALL_CREATE_4_DEF_3(p1, p2, d2, p3, d3, p4, d4) \
00367 template <typename Tag> \
00368 static saga::task create (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00369 p4 par4 = d4) \
00370 { return (createpriv (par1, par2, par3, par4, Tag())); } \
00371 //-----------------------------------------------------------------------------
00372 #define SAGA_CALL_CREATE_4_DEF_4(p1, d1, p2, d2, p3, d3, p4, d4) \
00373 template <typename Tag> \
00374 static saga::task create (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00375 p4 par4 = d4) \
00376 { return (createpriv (par1, par2, par3, par4, Tag())); } \
00377 //-----------------------------------------------------------------------------
00378
00379
00380 #define SAGA_CALL_PRIV_4(name, p1, p2, p3, p4) \
00381 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Sync); \
00382 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Async); \
00383 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Task); \
00384 //-----------------------------------------------------------------------------
00385 #define SAGA_CALL_CONST_PRIV_4(name, p1, p2, p3, p4) \
00386 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Sync) const; \
00387 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Async) const; \
00388 saga::task name ## priv (p1, p2, p3, p4, saga::task_base::Task) const; \
00389 //-----------------------------------------------------------------------------
00390 #define SAGA_CALL_CREATE_PRIV_4(p1, p2, p3, p4) \
00391 static saga::task createpriv (p1, p2, p3, p4, saga::task_base::Sync); \
00392 static saga::task createpriv (p1, p2, p3, p4, saga::task_base::Async); \
00393 static saga::task createpriv (p1, p2, p3, p4, saga::task_base::Task); \
00394 //-----------------------------------------------------------------------------
00395
00397
00398
00399
00401
00402
00403 #define SAGA_CALL_PUB_5_DEF_0(name, p1, p2, p3, p4, p5) \
00404 template <typename Tag> \
00405 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4, p5 par5) \
00406 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00407 //-----------------------------------------------------------------------------
00408 #define SAGA_CALL_PUB_5_DEF_1(name, p1, p2, p3, p4, p5, d5) \
00409 template <typename Tag> \
00410 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4, \
00411 p5 par5 = d5) \
00412 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00413 //-----------------------------------------------------------------------------
00414 #define SAGA_CALL_PUB_5_DEF_2(name, p1, p2, p3, p4, d4, p5, d5) \
00415 template <typename Tag> \
00416 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4 = d4, \
00417 p5 par5 = d5) \
00418 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00419 //-----------------------------------------------------------------------------
00420 #define SAGA_CALL_PUB_5_DEF_3(name, p1, p2, p3, d3, p4, d4, p5, d5) \
00421 template <typename Tag> \
00422 saga::task name (p1 par1, p2 par2, p3 par3 = d3, \
00423 p4 par4 = d4, p5 par5 = d5) \
00424 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00425 //-----------------------------------------------------------------------------
00426 #define SAGA_CALL_PUB_5_DEF_4(name, p1, p2, d2, p3, d3, p4, d4, p5, d5) \
00427 template <typename Tag> \
00428 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00429 p4 par4 = d4, p5 par5 = d5) \
00430 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00431 //-----------------------------------------------------------------------------
00432 #define SAGA_CALL_PUB_5_DEF_5(name, p1, d1, p2, d2, p3, d3, p4, d4, p5, d5) \
00433 template <typename Tag> \
00434 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00435 p4 par4 = d4, p5 par5 = d5) \
00436 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00437 //-----------------------------------------------------------------------------
00438
00439
00440 #define SAGA_CALL_CONST_PUB_5_DEF_0(name, p1, p2, p3, p4, p5) \
00441 template <typename Tag> \
00442 saga::task name (p1 par1, p2 par2, p3 par3, p5 par5) const \
00443 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00444 //-----------------------------------------------------------------------------
00445 #define SAGA_CALL_CONST_PUB_5_DEF_1(name, p1, p2, p3, p4, p5, d5) \
00446 template <typename Tag> \
00447 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4, \
00448 p5 par5 = d5) const \
00449 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00450 //-----------------------------------------------------------------------------
00451 #define SAGA_CALL_CONST_PUB_5_DEF_2(name, p1, p2, p3, p4, d4, p5, d5) \
00452 template <typename Tag> \
00453 saga::task name (p1 par1, p2 par2, p3 par3, p4 par4 = d4, \
00454 p5 par5 = d5) const \
00455 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00456 //-----------------------------------------------------------------------------
00457 #define SAGA_CALL_CONST_PUB_5_DEF_3(name, p1, p2, p3, d3, p4, d4, p5, d5) \
00458 template <typename Tag> \
00459 saga::task name (p1 par1, p2 par2, p3 par3 = d3, p4 par4 = d4, \
00460 p5 par5 = d5) const \
00461 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00462 //-----------------------------------------------------------------------------
00463 #define SAGA_CALL_CONST_PUB_5_DEF_4(name, p1, p2, d2, p3, d3, p4, d4, p5, d5) \
00464 template <typename Tag> \
00465 saga::task name (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00466 p4 par4 = d4, p5 par5 = d5) const \
00467 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00468 //-----------------------------------------------------------------------------
00469 #define SAGA_CALL_CONST_PUB_5_DEF_5(name, p1, d1, p2, d2, p3, d3, p4, d4, \
00470 p5, d5) \
00471 template <typename Tag> \
00472 saga::task name (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00473 p4 par4 = d4, p5 par5 = d5) const \
00474 { return (name ## priv (par1, par2, par3, par4, par5, Tag())); } \
00475 //-----------------------------------------------------------------------------
00476
00477
00478 #define SAGA_CALL_CREATE_5_DEF_0(p1, p2, p3, p4, p5) \
00479 template <typename Tag> \
00480 static saga::task create (p1 par1, p2 par2, p3 par3, p4 par4, p5 par5) \
00481 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00482 //-----------------------------------------------------------------------------
00483 #define SAGA_CALL_CREATE_5_DEF_1(p1, p2, p3, p4, p5, d5) \
00484 template <typename Tag> \
00485 static saga::task create (p1 par1, p2 par2, p3 par3, p4 par4, \
00486 p5 par5 = d5) \
00487 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00488 //-----------------------------------------------------------------------------
00489 #define SAGA_CALL_CREATE_5_DEF_2(p1, p2, p3, p4, d4, p5, d5) \
00490 template <typename Tag> \
00491 static saga::task create (p1 par1, p2 par2, p3 par3, p4 par4 = d4, \
00492 p5 par5 = d5) \
00493 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00494 //-----------------------------------------------------------------------------
00495 #define SAGA_CALL_CREATE_5_DEF_3(p1, p2, p3, d3, p4, d4, p5, d5) \
00496 template <typename Tag> \
00497 static saga::task create (p1 par1, p2 par2, p3 par3 = d3, \
00498 p4 par4 = d4, p5 par5 = d5) \
00499 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00500 //-----------------------------------------------------------------------------
00501 #define SAGA_CALL_CREATE_5_DEF_4(p1, p2, d2, p3, d3, p4, d4, p5, d5) \
00502 template <typename Tag> \
00503 static saga::task create (p1 par1, p2 par2 = d2, p3 par3 = d3, \
00504 p4 par4 = d4, p5 par5 = d5) \
00505 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00506 //-----------------------------------------------------------------------------
00507 #define SAGA_CALL_CREATE_5_DEF_5(p1, d1, p2, d2, p3, d3, p4, d4, p5, d5) \
00508 template <typename Tag> \
00509 static saga::task create (p1 par1 = d1, p2 par2 = d2, p3 par3 = d3, \
00510 p4 par4 = d4, p5 par5 = d5) \
00511 { return (createpriv (par1, par2, par3, par4, par5, Tag())); } \
00512 //-----------------------------------------------------------------------------
00513
00514
00515 #define SAGA_CALL_PRIV_5(name, p1, p2, p3, p4, p5) \
00516 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Sync); \
00517 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Async); \
00518 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Task); \
00519 //-----------------------------------------------------------------------------
00520 #define SAGA_CALL_CONST_PRIV_5(name, p1, p2, p3, p4, p5) \
00521 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Sync) const; \
00522 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Async) const; \
00523 saga::task name ## priv (p1, p2, p3, p4, p5, saga::task_base::Task) const; \
00524 //-----------------------------------------------------------------------------
00525 #define SAGA_CALL_CREATE_PRIV_5(p1, p2, p3, p4, p5) \
00526 static saga::task createpriv (p1, p2, p3, p4, p5, saga::task_base::Sync); \
00527 static saga::task createpriv (p1, p2, p3, p4, p5, saga::task_base::Async); \
00528 static saga::task createpriv (p1, p2, p3, p4, p5, saga::task_base::Task); \
00529 //-----------------------------------------------------------------------------
00530
00532
00533 #endif // SAGA_CALL_HPP
00534