SAGA Adaptor CPI v.1.0
|
00001 // Copyright (c) 2005-2007 Andre Merzky (andre@merzky.net) 00002 // Copyright (c) 2005-2009 Hartmut Kaiser 00003 // Copyright (c) 2007 Ole Weidner (oweidner@cct.lsu.edu) 00004 // 00005 // Distributed under the Boost Software License, Version 1.0. (See accompanying 00006 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00007 00008 #ifndef SAGA_CALL_HPP 00009 #define SAGA_CALL_HPP 00010 00011 #include <saga/saga/task.hpp> 00012 00014 00016 // 00017 // FIXME: document usage extensively 00018 // 00019 00021 // 00022 // 0 parameters 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 // 1 parameter 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 // 2 parameters 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 // 3 parameters 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 // 4 parameters 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 // 5 parameters 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