SAGA C++ API 1.6
call.hpp
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines