library of assembled shared sources

http://lass.cocamware.com

bind.h

Go to the documentation of this file.
00001 /*
00002  * *** ATTENTION!  DO NOT MODIFY THIS FILE DIRECTLY! ***
00003  * 
00004  * It has automatically been generated from bind.tmpl.h
00005  * by param_expander.py on Sun Nov 09 16:55:50 2008.
00006  */
00007 
00008 /** @file
00009  *  @author Bram de Greve (bramz@users.sourceforge.net)
00010  *  @author Tom De Muer (tomdemuer@users.sourceforge.net)
00011  *
00012  *  *** BEGIN LICENSE INFORMATION ***
00013  *  
00014  *  The contents of this file are subject to the Common Public Attribution License 
00015  *  Version 1.0 (the "License"); you may not use this file except in compliance with 
00016  *  the License. You may obtain a copy of the License at 
00017  *  http://lass.sourceforge.net/cpal-license. The License is based on the 
00018  *  Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover 
00019  *  use of software over a computer network and provide for limited attribution for 
00020  *  the Original Developer. In addition, Exhibit A has been modified to be consistent 
00021  *  with Exhibit B.
00022  *  
00023  *  Software distributed under the License is distributed on an "AS IS" basis, WITHOUT 
00024  *  WARRANTY OF ANY KIND, either express or implied. See the License for the specific 
00025  *  language governing rights and limitations under the License.
00026  *  
00027  *  The Original Code is LASS - Library of Assembled Shared Sources.
00028  *  
00029  *  The Initial Developer of the Original Code is Bram de Greve and Tom De Muer.
00030  *  The Original Developer is the Initial Developer.
00031  *  
00032  *  All portions of the code written by the Initial Developer are:
00033  *  Copyright (C) 2004-2007 the Initial Developer.
00034  *  All Rights Reserved.
00035  *  
00036  *  Contributor(s):
00037  *
00038  *  Alternatively, the contents of this file may be used under the terms of the 
00039  *  GNU General Public License Version 2 or later (the GPL), in which case the 
00040  *  provisions of GPL are applicable instead of those above.  If you wish to allow use
00041  *  of your version of this file only under the terms of the GPL and not to allow 
00042  *  others to use your version of this file under the CPAL, indicate your decision by 
00043  *  deleting the provisions above and replace them with the notice and other 
00044  *  provisions required by the GPL License. If you do not delete the provisions above,
00045  *  a recipient may use your version of this file under either the CPAL or the GPL.
00046  *  
00047  *  *** END LICENSE INFORMATION ***
00048  */
00049 
00050 /** @defgroup Bind
00051  *  @brief bind call and arguments to a nullary callback.
00052  *
00053  *  @code
00054  *  #include <lass/util/bind.h>
00055  *  #include <lass/util/shared_ptr.h>
00056  *  namespace using lass::util;
00057  *
00058  *  void fun(const std::string& a);
00059  *  float moreFun(float a, float b);
00060  *  class Spam
00061  *  {
00062  *      void ham(const std::string& something);
00063  *      std::string eggs(int num) const;
00064  *  };
00065  *
00066  *  // ...
00067  *
00068  *  // regulare function call
00069  *  Callback0 boundFun = bind(fun, "hello world!");
00070  *
00071  *  // with return value.  type conversion is allowed both on arguments and result
00072  *  CallbackR1<double> boundMoreFun(moreFun, 5, 6);
00073  *
00074  *  // bound method call, you have to make sure spam1 is still alive when call is executed!
00075  *  Spam spam1;
00076  *  Callback0 boundHam = bind(&Spam::ham, &spam1, "eggs");
00077  *
00078  *  // bound method call with smart pointer, return value is ignored
00079  *  SharedPtr<Spam> spam2(new Spam);
00080  *  Callback0 boundEggs = bind(&Spam::eggs, spam2, 3);
00081  *
00082  *  // ...
00083  *
00084  *  boundFun();
00085  *  double result = boundMoreFun();
00086  *  boundHam();
00087  *  boundEggs();
00088  *  @endcode
00089  */
00090 
00091 #ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_BIND_H
00092 #define LASS_GUARDIAN_OF_INCLUSION_UTIL_BIND_H
00093 
00094 #include "util_common.h"
00095 #include "callback_0.h"
00096 #include "callback_1.h"
00097 #include "callback_2.h"
00098 #include "callback_3.h"
00099 #include "callback_4.h"
00100 #include "callback_5.h"
00101 #include "callback_6.h"
00102 #include "callback_7.h"
00103 #include "callback_8.h"
00104 #include "callback_9.h"
00105 #include "callback_10.h"
00106 #include "callback_11.h"
00107 #include "callback_12.h"
00108 #include "callback_13.h"
00109 #include "callback_14.h"
00110 #include "callback_15.h"
00111 #include "callback_r_0.h"
00112 #include "callback_r_1.h"
00113 #include "callback_r_2.h"
00114 #include "callback_r_3.h"
00115 #include "callback_r_4.h"
00116 #include "callback_r_5.h"
00117 #include "callback_r_6.h"
00118 #include "callback_r_7.h"
00119 #include "callback_r_8.h"
00120 #include "callback_r_9.h"
00121 #include "callback_r_10.h"
00122 #include "callback_r_11.h"
00123 #include "callback_r_12.h"
00124 #include "callback_r_13.h"
00125 #include "callback_r_14.h"
00126 #include "callback_r_15.h"
00127 
00128 
00129 #if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
00130 #   pragma warning(push)
00131 #   pragma warning(disable: 4267) // for size_t parameters ...
00132 #endif
00133 
00134 namespace lass
00135 {
00136 namespace util
00137 {
00138 
00139 namespace impl
00140 {
00141 
00142 /** @ingroup Bind
00143  *  @internal
00144  */
00145 template <typename R> struct BindCallback { typedef CallbackR0<R> Type; };
00146 template <> struct BindCallback<void> { typedef Callback0 Type; };
00147 
00148 /** @ingroup Bind
00149  *  @internal
00150  */
00151 template <typename R> class BindDispatcher: public DispatcherR0<R> 
00152 {
00153     bool doIsEquivalent(const DispatcherR0<R>* other) const { return false; }
00154 };
00155 template <> class BindDispatcher<void>: public impl::Dispatcher0 
00156 {
00157     bool doIsEquivalent(const Dispatcher0* other) const { return false; }
00158 };
00159 
00160 }
00161 
00162 // --- zero arguments ------------------------------------------------------------------------------
00163 
00164 /** @ingroup Bind
00165  */
00166 template <typename R>
00167 typename impl::BindCallback<R>::Type 
00168 bind(R (*fun)())
00169 {
00170     return typename impl::BindCallback<R>::Type(fun);
00171 }
00172 
00173 /** @ingroup Bind
00174  */
00175 template <typename R, typename Obj, typename ObjPtr>
00176 typename impl::BindCallback<R>::Type 
00177 bind(R (Obj::*fun)(), ObjPtr obj)
00178 {
00179     return typename impl::BindCallback<R>::Type(obj, fun);
00180 }
00181 
00182 /** @ingroup Bind
00183  */
00184 template <typename R, typename Obj, typename ObjPtr>
00185 typename impl::BindCallback<R>::Type
00186 bind(R (Obj::*fun)() const, ObjPtr obj)
00187 {
00188     return typename impl::BindCallback<R>::Type(obj, fun);
00189 }
00190 
00191 /** @ingroup Bind
00192  */
00193 inline Callback0 bind(const Callback0& fun)
00194 {
00195     return fun;
00196 }
00197 
00198 /** @ingroup Bind
00199  */
00200 template <typename R>
00201 CallbackR0<R> bind(const CallbackR0<R>& fun)
00202 {
00203     return fun;
00204 }
00205 
00206 
00207 
00208 // --- 1 argument(s) -----------------------------------------------------------------------------
00209 
00210 namespace impl
00211 {
00212 
00213 /** @ingroup Bind
00214  *  @internal
00215  */
00216 template <typename R, typename Fun, typename X1>
00217 class DispatcherBindFun1: public BindDispatcher<R>
00218 {
00219 public:
00220     DispatcherBindFun1(Fun fun, X1 x1): fun_(fun), x1_(x1) {}
00221 private:
00222     R doCall() const { return fun_(x1_); }
00223     Fun fun_;
00224     typename CallTraits<X1>::TValue x1_;
00225 };
00226 
00227 /** @ingroup Bind
00228  *  @internal
00229  */
00230 template <typename R, typename ObjPtr, typename Fun, typename X1>
00231 class DispatcherBindMemFun1: public BindDispatcher<R>
00232 {
00233 public:
00234     DispatcherBindMemFun1(ObjPtr obj, Fun fun, X1 x1): obj_(obj), fun_(fun), x1_(x1) {}
00235 private:
00236     R doCall() const { return ((*obj_).*fun_)(x1_); }
00237     ObjPtr obj_;
00238     Fun fun_;
00239     typename CallTraits<X1>::TValue x1_;
00240 };
00241 
00242 }
00243 
00244 /** @ingroup Bind
00245  */
00246 template <typename R, typename P1, typename X1>
00247 typename impl::BindCallback<R>::Type 
00248 bind(R (*fun)(P1), X1 x1)
00249 {
00250     typedef R (*TFun)(P1);
00251     typedef typename impl::BindCallback<R>::Type TCallback;
00252     typedef impl::DispatcherBindFun1<R, TFun, X1> TDispatcher;
00253     return TCallback(TDispatcher(fun, x1));
00254 }
00255 
00256 /** @ingroup Bind
00257  */
00258 template <typename R, typename P1, typename Obj, typename ObjPtr, typename X1>
00259 typename impl::BindCallback<R>::Type 
00260 bind(R (Obj::*fun)(P1), ObjPtr obj, X1 x1)
00261 {
00262     typedef R (Obj::*TFun)(P1);
00263     typedef typename impl::BindCallback<R>::Type TCallback;
00264     typedef impl::DispatcherBindMemFun1<R, ObjPtr, TFun, X1> TDispatcher;
00265     return TCallback(TDispatcher(obj, fun, x1));
00266 }
00267 
00268 /** @ingroup Bind
00269  */
00270 template <typename R, typename P1, typename Obj, typename ObjPtr, typename X1>
00271 typename impl::BindCallback<R>::Type 
00272 bind(R (Obj::*fun)(P1) const, ObjPtr obj, X1 x1)
00273 {
00274     typedef R (Obj::*TFun)(P1) const;
00275     typedef typename impl::BindCallback<R>::Type TCallback;
00276     typedef impl::DispatcherBindMemFun1<R, ObjPtr, TFun, X1> TDispatcher;
00277     return TCallback(TDispatcher(obj, fun, x1));
00278 }
00279 
00280 /** @ingroup Bind
00281  */
00282 template <typename R, typename P1, typename X1>
00283 CallbackR0<R>
00284 bind(const CallbackR1<R, P1>& fun, X1 x1)
00285 {
00286     typedef CallbackR1<R, P1> TFun;
00287     typedef CallbackR0<R> TCallback;
00288     typedef impl::DispatcherBindFun1<R, TFun, X1> TDispatcher;
00289     return TCallback(TDispatcher(fun, x1));
00290 }
00291 
00292 /** @ingroup Bind
00293  */
00294 template <typename P1, typename X1>
00295 Callback0
00296 bind(const Callback1<P1>& fun, X1 x1)
00297 {
00298     typedef Callback1<P1> TFun;
00299     typedef Callback0 TCallback;
00300     typedef impl::DispatcherBindFun1<void, TFun, X1> TDispatcher;
00301     return TCallback(TDispatcher(fun, x1));
00302 }
00303 
00304 
00305 
00306 // --- 2 argument(s) -----------------------------------------------------------------------------
00307 
00308 namespace impl
00309 {
00310 
00311 /** @ingroup Bind
00312  *  @internal
00313  */
00314 template <typename R, typename Fun, typename X1, typename X2>
00315 class DispatcherBindFun2: public BindDispatcher<R>
00316 {
00317 public:
00318     DispatcherBindFun2(Fun fun, X1 x1, X2 x2): fun_(fun), x1_(x1), x2_(x2) {}
00319 private:
00320     R doCall() const { return fun_(x1_, x2_); }
00321     Fun fun_;
00322     typename CallTraits<X1>::TValue x1_;
00323     typename CallTraits<X2>::TValue x2_;
00324 };
00325 
00326 /** @ingroup Bind
00327  *  @internal
00328  */
00329 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2>
00330 class DispatcherBindMemFun2: public BindDispatcher<R>
00331 {
00332 public:
00333     DispatcherBindMemFun2(ObjPtr obj, Fun fun, X1 x1, X2 x2): obj_(obj), fun_(fun), x1_(x1), x2_(x2) {}
00334 private:
00335     R doCall() const { return ((*obj_).*fun_)(x1_, x2_); }
00336     ObjPtr obj_;
00337     Fun fun_;
00338     typename CallTraits<X1>::TValue x1_;
00339     typename CallTraits<X2>::TValue x2_;
00340 };
00341 
00342 }
00343 
00344 /** @ingroup Bind
00345  */
00346 template <typename R, typename P1, typename P2, typename X1, typename X2>
00347 typename impl::BindCallback<R>::Type 
00348 bind(R (*fun)(P1, P2), X1 x1, X2 x2)
00349 {
00350     typedef R (*TFun)(P1, P2);
00351     typedef typename impl::BindCallback<R>::Type TCallback;
00352     typedef impl::DispatcherBindFun2<R, TFun, X1, X2> TDispatcher;
00353     return TCallback(TDispatcher(fun, x1, x2));
00354 }
00355 
00356 /** @ingroup Bind
00357  */
00358 template <typename R, typename P1, typename P2, typename Obj, typename ObjPtr, typename X1, typename X2>
00359 typename impl::BindCallback<R>::Type 
00360 bind(R (Obj::*fun)(P1, P2), ObjPtr obj, X1 x1, X2 x2)
00361 {
00362     typedef R (Obj::*TFun)(P1, P2);
00363     typedef typename impl::BindCallback<R>::Type TCallback;
00364     typedef impl::DispatcherBindMemFun2<R, ObjPtr, TFun, X1, X2> TDispatcher;
00365     return TCallback(TDispatcher(obj, fun, x1, x2));
00366 }
00367 
00368 /** @ingroup Bind
00369  */
00370 template <typename R, typename P1, typename P2, typename Obj, typename ObjPtr, typename X1, typename X2>
00371 typename impl::BindCallback<R>::Type 
00372 bind(R (Obj::*fun)(P1, P2) const, ObjPtr obj, X1 x1, X2 x2)
00373 {
00374     typedef R (Obj::*TFun)(P1, P2) const;
00375     typedef typename impl::BindCallback<R>::Type TCallback;
00376     typedef impl::DispatcherBindMemFun2<R, ObjPtr, TFun, X1, X2> TDispatcher;
00377     return TCallback(TDispatcher(obj, fun, x1, x2));
00378 }
00379 
00380 /** @ingroup Bind
00381  */
00382 template <typename R, typename P1, typename P2, typename X1, typename X2>
00383 CallbackR0<R>
00384 bind(const CallbackR2<R, P1, P2>& fun, X1 x1, X2 x2)
00385 {
00386     typedef CallbackR2<R, P1, P2> TFun;
00387     typedef CallbackR0<R> TCallback;
00388     typedef impl::DispatcherBindFun2<R, TFun, X1, X2> TDispatcher;
00389     return TCallback(TDispatcher(fun, x1, x2));
00390 }
00391 
00392 /** @ingroup Bind
00393  */
00394 template <typename P1, typename P2, typename X1, typename X2>
00395 Callback0
00396 bind(const Callback2<P1, P2>& fun, X1 x1, X2 x2)
00397 {
00398     typedef Callback2<P1, P2> TFun;
00399     typedef Callback0 TCallback;
00400     typedef impl::DispatcherBindFun2<void, TFun, X1, X2> TDispatcher;
00401     return TCallback(TDispatcher(fun, x1, x2));
00402 }
00403 
00404 
00405 
00406 // --- 3 argument(s) -----------------------------------------------------------------------------
00407 
00408 namespace impl
00409 {
00410 
00411 /** @ingroup Bind
00412  *  @internal
00413  */
00414 template <typename R, typename Fun, typename X1, typename X2, typename X3>
00415 class DispatcherBindFun3: public BindDispatcher<R>
00416 {
00417 public:
00418     DispatcherBindFun3(Fun fun, X1 x1, X2 x2, X3 x3): fun_(fun), x1_(x1), x2_(x2), x3_(x3) {}
00419 private:
00420     R doCall() const { return fun_(x1_, x2_, x3_); }
00421     Fun fun_;
00422     typename CallTraits<X1>::TValue x1_;
00423     typename CallTraits<X2>::TValue x2_;
00424     typename CallTraits<X3>::TValue x3_;
00425 };
00426 
00427 /** @ingroup Bind
00428  *  @internal
00429  */
00430 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3>
00431 class DispatcherBindMemFun3: public BindDispatcher<R>
00432 {
00433 public:
00434     DispatcherBindMemFun3(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3) {}
00435 private:
00436     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_); }
00437     ObjPtr obj_;
00438     Fun fun_;
00439     typename CallTraits<X1>::TValue x1_;
00440     typename CallTraits<X2>::TValue x2_;
00441     typename CallTraits<X3>::TValue x3_;
00442 };
00443 
00444 }
00445 
00446 /** @ingroup Bind
00447  */
00448 template <typename R, typename P1, typename P2, typename P3, typename X1, typename X2, typename X3>
00449 typename impl::BindCallback<R>::Type 
00450 bind(R (*fun)(P1, P2, P3), X1 x1, X2 x2, X3 x3)
00451 {
00452     typedef R (*TFun)(P1, P2, P3);
00453     typedef typename impl::BindCallback<R>::Type TCallback;
00454     typedef impl::DispatcherBindFun3<R, TFun, X1, X2, X3> TDispatcher;
00455     return TCallback(TDispatcher(fun, x1, x2, x3));
00456 }
00457 
00458 /** @ingroup Bind
00459  */
00460 template <typename R, typename P1, typename P2, typename P3, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3>
00461 typename impl::BindCallback<R>::Type 
00462 bind(R (Obj::*fun)(P1, P2, P3), ObjPtr obj, X1 x1, X2 x2, X3 x3)
00463 {
00464     typedef R (Obj::*TFun)(P1, P2, P3);
00465     typedef typename impl::BindCallback<R>::Type TCallback;
00466     typedef impl::DispatcherBindMemFun3<R, ObjPtr, TFun, X1, X2, X3> TDispatcher;
00467     return TCallback(TDispatcher(obj, fun, x1, x2, x3));
00468 }
00469 
00470 /** @ingroup Bind
00471  */
00472 template <typename R, typename P1, typename P2, typename P3, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3>
00473 typename impl::BindCallback<R>::Type 
00474 bind(R (Obj::*fun)(P1, P2, P3) const, ObjPtr obj, X1 x1, X2 x2, X3 x3)
00475 {
00476     typedef R (Obj::*TFun)(P1, P2, P3) const;
00477     typedef typename impl::BindCallback<R>::Type TCallback;
00478     typedef impl::DispatcherBindMemFun3<R, ObjPtr, TFun, X1, X2, X3> TDispatcher;
00479     return TCallback(TDispatcher(obj, fun, x1, x2, x3));
00480 }
00481 
00482 /** @ingroup Bind
00483  */
00484 template <typename R, typename P1, typename P2, typename P3, typename X1, typename X2, typename X3>
00485 CallbackR0<R>
00486 bind(const CallbackR3<R, P1, P2, P3>& fun, X1 x1, X2 x2, X3 x3)
00487 {
00488     typedef CallbackR3<R, P1, P2, P3> TFun;
00489     typedef CallbackR0<R> TCallback;
00490     typedef impl::DispatcherBindFun3<R, TFun, X1, X2, X3> TDispatcher;
00491     return TCallback(TDispatcher(fun, x1, x2, x3));
00492 }
00493 
00494 /** @ingroup Bind
00495  */
00496 template <typename P1, typename P2, typename P3, typename X1, typename X2, typename X3>
00497 Callback0
00498 bind(const Callback3<P1, P2, P3>& fun, X1 x1, X2 x2, X3 x3)
00499 {
00500     typedef Callback3<P1, P2, P3> TFun;
00501     typedef Callback0 TCallback;
00502     typedef impl::DispatcherBindFun3<void, TFun, X1, X2, X3> TDispatcher;
00503     return TCallback(TDispatcher(fun, x1, x2, x3));
00504 }
00505 
00506 
00507 
00508 // --- 4 argument(s) -----------------------------------------------------------------------------
00509 
00510 namespace impl
00511 {
00512 
00513 /** @ingroup Bind
00514  *  @internal
00515  */
00516 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4>
00517 class DispatcherBindFun4: public BindDispatcher<R>
00518 {
00519 public:
00520     DispatcherBindFun4(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4) {}
00521 private:
00522     R doCall() const { return fun_(x1_, x2_, x3_, x4_); }
00523     Fun fun_;
00524     typename CallTraits<X1>::TValue x1_;
00525     typename CallTraits<X2>::TValue x2_;
00526     typename CallTraits<X3>::TValue x3_;
00527     typename CallTraits<X4>::TValue x4_;
00528 };
00529 
00530 /** @ingroup Bind
00531  *  @internal
00532  */
00533 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4>
00534 class DispatcherBindMemFun4: public BindDispatcher<R>
00535 {
00536 public:
00537     DispatcherBindMemFun4(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4) {}
00538 private:
00539     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_); }
00540     ObjPtr obj_;
00541     Fun fun_;
00542     typename CallTraits<X1>::TValue x1_;
00543     typename CallTraits<X2>::TValue x2_;
00544     typename CallTraits<X3>::TValue x3_;
00545     typename CallTraits<X4>::TValue x4_;
00546 };
00547 
00548 }
00549 
00550 /** @ingroup Bind
00551  */
00552 template <typename R, typename P1, typename P2, typename P3, typename P4, typename X1, typename X2, typename X3, typename X4>
00553 typename impl::BindCallback<R>::Type 
00554 bind(R (*fun)(P1, P2, P3, P4), X1 x1, X2 x2, X3 x3, X4 x4)
00555 {
00556     typedef R (*TFun)(P1, P2, P3, P4);
00557     typedef typename impl::BindCallback<R>::Type TCallback;
00558     typedef impl::DispatcherBindFun4<R, TFun, X1, X2, X3, X4> TDispatcher;
00559     return TCallback(TDispatcher(fun, x1, x2, x3, x4));
00560 }
00561 
00562 /** @ingroup Bind
00563  */
00564 template <typename R, typename P1, typename P2, typename P3, typename P4, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4>
00565 typename impl::BindCallback<R>::Type 
00566 bind(R (Obj::*fun)(P1, P2, P3, P4), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4)
00567 {
00568     typedef R (Obj::*TFun)(P1, P2, P3, P4);
00569     typedef typename impl::BindCallback<R>::Type TCallback;
00570     typedef impl::DispatcherBindMemFun4<R, ObjPtr, TFun, X1, X2, X3, X4> TDispatcher;
00571     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4));
00572 }
00573 
00574 /** @ingroup Bind
00575  */
00576 template <typename R, typename P1, typename P2, typename P3, typename P4, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4>
00577 typename impl::BindCallback<R>::Type 
00578 bind(R (Obj::*fun)(P1, P2, P3, P4) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4)
00579 {
00580     typedef R (Obj::*TFun)(P1, P2, P3, P4) const;
00581     typedef typename impl::BindCallback<R>::Type TCallback;
00582     typedef impl::DispatcherBindMemFun4<R, ObjPtr, TFun, X1, X2, X3, X4> TDispatcher;
00583     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4));
00584 }
00585 
00586 /** @ingroup Bind
00587  */
00588 template <typename R, typename P1, typename P2, typename P3, typename P4, typename X1, typename X2, typename X3, typename X4>
00589 CallbackR0<R>
00590 bind(const CallbackR4<R, P1, P2, P3, P4>& fun, X1 x1, X2 x2, X3 x3, X4 x4)
00591 {
00592     typedef CallbackR4<R, P1, P2, P3, P4> TFun;
00593     typedef CallbackR0<R> TCallback;
00594     typedef impl::DispatcherBindFun4<R, TFun, X1, X2, X3, X4> TDispatcher;
00595     return TCallback(TDispatcher(fun, x1, x2, x3, x4));
00596 }
00597 
00598 /** @ingroup Bind
00599  */
00600 template <typename P1, typename P2, typename P3, typename P4, typename X1, typename X2, typename X3, typename X4>
00601 Callback0
00602 bind(const Callback4<P1, P2, P3, P4>& fun, X1 x1, X2 x2, X3 x3, X4 x4)
00603 {
00604     typedef Callback4<P1, P2, P3, P4> TFun;
00605     typedef Callback0 TCallback;
00606     typedef impl::DispatcherBindFun4<void, TFun, X1, X2, X3, X4> TDispatcher;
00607     return TCallback(TDispatcher(fun, x1, x2, x3, x4));
00608 }
00609 
00610 
00611 
00612 // --- 5 argument(s) -----------------------------------------------------------------------------
00613 
00614 namespace impl
00615 {
00616 
00617 /** @ingroup Bind
00618  *  @internal
00619  */
00620 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5>
00621 class DispatcherBindFun5: public BindDispatcher<R>
00622 {
00623 public:
00624     DispatcherBindFun5(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5) {}
00625 private:
00626     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_); }
00627     Fun fun_;
00628     typename CallTraits<X1>::TValue x1_;
00629     typename CallTraits<X2>::TValue x2_;
00630     typename CallTraits<X3>::TValue x3_;
00631     typename CallTraits<X4>::TValue x4_;
00632     typename CallTraits<X5>::TValue x5_;
00633 };
00634 
00635 /** @ingroup Bind
00636  *  @internal
00637  */
00638 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5>
00639 class DispatcherBindMemFun5: public BindDispatcher<R>
00640 {
00641 public:
00642     DispatcherBindMemFun5(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5) {}
00643 private:
00644     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_); }
00645     ObjPtr obj_;
00646     Fun fun_;
00647     typename CallTraits<X1>::TValue x1_;
00648     typename CallTraits<X2>::TValue x2_;
00649     typename CallTraits<X3>::TValue x3_;
00650     typename CallTraits<X4>::TValue x4_;
00651     typename CallTraits<X5>::TValue x5_;
00652 };
00653 
00654 }
00655 
00656 /** @ingroup Bind
00657  */
00658 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename X1, typename X2, typename X3, typename X4, typename X5>
00659 typename impl::BindCallback<R>::Type 
00660 bind(R (*fun)(P1, P2, P3, P4, P5), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5)
00661 {
00662     typedef R (*TFun)(P1, P2, P3, P4, P5);
00663     typedef typename impl::BindCallback<R>::Type TCallback;
00664     typedef impl::DispatcherBindFun5<R, TFun, X1, X2, X3, X4, X5> TDispatcher;
00665     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5));
00666 }
00667 
00668 /** @ingroup Bind
00669  */
00670 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5>
00671 typename impl::BindCallback<R>::Type 
00672 bind(R (Obj::*fun)(P1, P2, P3, P4, P5), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5)
00673 {
00674     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5);
00675     typedef typename impl::BindCallback<R>::Type TCallback;
00676     typedef impl::DispatcherBindMemFun5<R, ObjPtr, TFun, X1, X2, X3, X4, X5> TDispatcher;
00677     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5));
00678 }
00679 
00680 /** @ingroup Bind
00681  */
00682 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5>
00683 typename impl::BindCallback<R>::Type 
00684 bind(R (Obj::*fun)(P1, P2, P3, P4, P5) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5)
00685 {
00686     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5) const;
00687     typedef typename impl::BindCallback<R>::Type TCallback;
00688     typedef impl::DispatcherBindMemFun5<R, ObjPtr, TFun, X1, X2, X3, X4, X5> TDispatcher;
00689     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5));
00690 }
00691 
00692 /** @ingroup Bind
00693  */
00694 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename X1, typename X2, typename X3, typename X4, typename X5>
00695 CallbackR0<R>
00696 bind(const CallbackR5<R, P1, P2, P3, P4, P5>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5)
00697 {
00698     typedef CallbackR5<R, P1, P2, P3, P4, P5> TFun;
00699     typedef CallbackR0<R> TCallback;
00700     typedef impl::DispatcherBindFun5<R, TFun, X1, X2, X3, X4, X5> TDispatcher;
00701     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5));
00702 }
00703 
00704 /** @ingroup Bind
00705  */
00706 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename X1, typename X2, typename X3, typename X4, typename X5>
00707 Callback0
00708 bind(const Callback5<P1, P2, P3, P4, P5>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5)
00709 {
00710     typedef Callback5<P1, P2, P3, P4, P5> TFun;
00711     typedef Callback0 TCallback;
00712     typedef impl::DispatcherBindFun5<void, TFun, X1, X2, X3, X4, X5> TDispatcher;
00713     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5));
00714 }
00715 
00716 
00717 
00718 // --- 6 argument(s) -----------------------------------------------------------------------------
00719 
00720 namespace impl
00721 {
00722 
00723 /** @ingroup Bind
00724  *  @internal
00725  */
00726 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00727 class DispatcherBindFun6: public BindDispatcher<R>
00728 {
00729 public:
00730     DispatcherBindFun6(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6) {}
00731 private:
00732     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_); }
00733     Fun fun_;
00734     typename CallTraits<X1>::TValue x1_;
00735     typename CallTraits<X2>::TValue x2_;
00736     typename CallTraits<X3>::TValue x3_;
00737     typename CallTraits<X4>::TValue x4_;
00738     typename CallTraits<X5>::TValue x5_;
00739     typename CallTraits<X6>::TValue x6_;
00740 };
00741 
00742 /** @ingroup Bind
00743  *  @internal
00744  */
00745 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00746 class DispatcherBindMemFun6: public BindDispatcher<R>
00747 {
00748 public:
00749     DispatcherBindMemFun6(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6) {}
00750 private:
00751     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_); }
00752     ObjPtr obj_;
00753     Fun fun_;
00754     typename CallTraits<X1>::TValue x1_;
00755     typename CallTraits<X2>::TValue x2_;
00756     typename CallTraits<X3>::TValue x3_;
00757     typename CallTraits<X4>::TValue x4_;
00758     typename CallTraits<X5>::TValue x5_;
00759     typename CallTraits<X6>::TValue x6_;
00760 };
00761 
00762 }
00763 
00764 /** @ingroup Bind
00765  */
00766 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00767 typename impl::BindCallback<R>::Type 
00768 bind(R (*fun)(P1, P2, P3, P4, P5, P6), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6)
00769 {
00770     typedef R (*TFun)(P1, P2, P3, P4, P5, P6);
00771     typedef typename impl::BindCallback<R>::Type TCallback;
00772     typedef impl::DispatcherBindFun6<R, TFun, X1, X2, X3, X4, X5, X6> TDispatcher;
00773     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6));
00774 }
00775 
00776 /** @ingroup Bind
00777  */
00778 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00779 typename impl::BindCallback<R>::Type 
00780 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6)
00781 {
00782     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6);
00783     typedef typename impl::BindCallback<R>::Type TCallback;
00784     typedef impl::DispatcherBindMemFun6<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6> TDispatcher;
00785     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6));
00786 }
00787 
00788 /** @ingroup Bind
00789  */
00790 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00791 typename impl::BindCallback<R>::Type 
00792 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6)
00793 {
00794     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6) const;
00795     typedef typename impl::BindCallback<R>::Type TCallback;
00796     typedef impl::DispatcherBindMemFun6<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6> TDispatcher;
00797     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6));
00798 }
00799 
00800 /** @ingroup Bind
00801  */
00802 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00803 CallbackR0<R>
00804 bind(const CallbackR6<R, P1, P2, P3, P4, P5, P6>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6)
00805 {
00806     typedef CallbackR6<R, P1, P2, P3, P4, P5, P6> TFun;
00807     typedef CallbackR0<R> TCallback;
00808     typedef impl::DispatcherBindFun6<R, TFun, X1, X2, X3, X4, X5, X6> TDispatcher;
00809     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6));
00810 }
00811 
00812 /** @ingroup Bind
00813  */
00814 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6>
00815 Callback0
00816 bind(const Callback6<P1, P2, P3, P4, P5, P6>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6)
00817 {
00818     typedef Callback6<P1, P2, P3, P4, P5, P6> TFun;
00819     typedef Callback0 TCallback;
00820     typedef impl::DispatcherBindFun6<void, TFun, X1, X2, X3, X4, X5, X6> TDispatcher;
00821     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6));
00822 }
00823 
00824 
00825 
00826 // --- 7 argument(s) -----------------------------------------------------------------------------
00827 
00828 namespace impl
00829 {
00830 
00831 /** @ingroup Bind
00832  *  @internal
00833  */
00834 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00835 class DispatcherBindFun7: public BindDispatcher<R>
00836 {
00837 public:
00838     DispatcherBindFun7(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7) {}
00839 private:
00840     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_); }
00841     Fun fun_;
00842     typename CallTraits<X1>::TValue x1_;
00843     typename CallTraits<X2>::TValue x2_;
00844     typename CallTraits<X3>::TValue x3_;
00845     typename CallTraits<X4>::TValue x4_;
00846     typename CallTraits<X5>::TValue x5_;
00847     typename CallTraits<X6>::TValue x6_;
00848     typename CallTraits<X7>::TValue x7_;
00849 };
00850 
00851 /** @ingroup Bind
00852  *  @internal
00853  */
00854 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00855 class DispatcherBindMemFun7: public BindDispatcher<R>
00856 {
00857 public:
00858     DispatcherBindMemFun7(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7) {}
00859 private:
00860     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_); }
00861     ObjPtr obj_;
00862     Fun fun_;
00863     typename CallTraits<X1>::TValue x1_;
00864     typename CallTraits<X2>::TValue x2_;
00865     typename CallTraits<X3>::TValue x3_;
00866     typename CallTraits<X4>::TValue x4_;
00867     typename CallTraits<X5>::TValue x5_;
00868     typename CallTraits<X6>::TValue x6_;
00869     typename CallTraits<X7>::TValue x7_;
00870 };
00871 
00872 }
00873 
00874 /** @ingroup Bind
00875  */
00876 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00877 typename impl::BindCallback<R>::Type 
00878 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7)
00879 {
00880     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7);
00881     typedef typename impl::BindCallback<R>::Type TCallback;
00882     typedef impl::DispatcherBindFun7<R, TFun, X1, X2, X3, X4, X5, X6, X7> TDispatcher;
00883     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7));
00884 }
00885 
00886 /** @ingroup Bind
00887  */
00888 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00889 typename impl::BindCallback<R>::Type 
00890 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7)
00891 {
00892     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7);
00893     typedef typename impl::BindCallback<R>::Type TCallback;
00894     typedef impl::DispatcherBindMemFun7<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7> TDispatcher;
00895     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7));
00896 }
00897 
00898 /** @ingroup Bind
00899  */
00900 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00901 typename impl::BindCallback<R>::Type 
00902 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7)
00903 {
00904     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7) const;
00905     typedef typename impl::BindCallback<R>::Type TCallback;
00906     typedef impl::DispatcherBindMemFun7<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7> TDispatcher;
00907     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7));
00908 }
00909 
00910 /** @ingroup Bind
00911  */
00912 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00913 CallbackR0<R>
00914 bind(const CallbackR7<R, P1, P2, P3, P4, P5, P6, P7>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7)
00915 {
00916     typedef CallbackR7<R, P1, P2, P3, P4, P5, P6, P7> TFun;
00917     typedef CallbackR0<R> TCallback;
00918     typedef impl::DispatcherBindFun7<R, TFun, X1, X2, X3, X4, X5, X6, X7> TDispatcher;
00919     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7));
00920 }
00921 
00922 /** @ingroup Bind
00923  */
00924 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7>
00925 Callback0
00926 bind(const Callback7<P1, P2, P3, P4, P5, P6, P7>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7)
00927 {
00928     typedef Callback7<P1, P2, P3, P4, P5, P6, P7> TFun;
00929     typedef Callback0 TCallback;
00930     typedef impl::DispatcherBindFun7<void, TFun, X1, X2, X3, X4, X5, X6, X7> TDispatcher;
00931     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7));
00932 }
00933 
00934 
00935 
00936 // --- 8 argument(s) -----------------------------------------------------------------------------
00937 
00938 namespace impl
00939 {
00940 
00941 /** @ingroup Bind
00942  *  @internal
00943  */
00944 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
00945 class DispatcherBindFun8: public BindDispatcher<R>
00946 {
00947 public:
00948     DispatcherBindFun8(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8) {}
00949 private:
00950     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_); }
00951     Fun fun_;
00952     typename CallTraits<X1>::TValue x1_;
00953     typename CallTraits<X2>::TValue x2_;
00954     typename CallTraits<X3>::TValue x3_;
00955     typename CallTraits<X4>::TValue x4_;
00956     typename CallTraits<X5>::TValue x5_;
00957     typename CallTraits<X6>::TValue x6_;
00958     typename CallTraits<X7>::TValue x7_;
00959     typename CallTraits<X8>::TValue x8_;
00960 };
00961 
00962 /** @ingroup Bind
00963  *  @internal
00964  */
00965 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
00966 class DispatcherBindMemFun8: public BindDispatcher<R>
00967 {
00968 public:
00969     DispatcherBindMemFun8(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8) {}
00970 private:
00971     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_); }
00972     ObjPtr obj_;
00973     Fun fun_;
00974     typename CallTraits<X1>::TValue x1_;
00975     typename CallTraits<X2>::TValue x2_;
00976     typename CallTraits<X3>::TValue x3_;
00977     typename CallTraits<X4>::TValue x4_;
00978     typename CallTraits<X5>::TValue x5_;
00979     typename CallTraits<X6>::TValue x6_;
00980     typename CallTraits<X7>::TValue x7_;
00981     typename CallTraits<X8>::TValue x8_;
00982 };
00983 
00984 }
00985 
00986 /** @ingroup Bind
00987  */
00988 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
00989 typename impl::BindCallback<R>::Type 
00990 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8)
00991 {
00992     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8);
00993     typedef typename impl::BindCallback<R>::Type TCallback;
00994     typedef impl::DispatcherBindFun8<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8> TDispatcher;
00995     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8));
00996 }
00997 
00998 /** @ingroup Bind
00999  */
01000 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
01001 typename impl::BindCallback<R>::Type 
01002 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8)
01003 {
01004     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8);
01005     typedef typename impl::BindCallback<R>::Type TCallback;
01006     typedef impl::DispatcherBindMemFun8<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8> TDispatcher;
01007     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8));
01008 }
01009 
01010 /** @ingroup Bind
01011  */
01012 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
01013 typename impl::BindCallback<R>::Type 
01014 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8)
01015 {
01016     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8) const;
01017     typedef typename impl::BindCallback<R>::Type TCallback;
01018     typedef impl::DispatcherBindMemFun8<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8> TDispatcher;
01019     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8));
01020 }
01021 
01022 /** @ingroup Bind
01023  */
01024 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
01025 CallbackR0<R>
01026 bind(const CallbackR8<R, P1, P2, P3, P4, P5, P6, P7, P8>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8)
01027 {
01028     typedef CallbackR8<R, P1, P2, P3, P4, P5, P6, P7, P8> TFun;
01029     typedef CallbackR0<R> TCallback;
01030     typedef impl::DispatcherBindFun8<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8> TDispatcher;
01031     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8));
01032 }
01033 
01034 /** @ingroup Bind
01035  */
01036 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8>
01037 Callback0
01038 bind(const Callback8<P1, P2, P3, P4, P5, P6, P7, P8>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8)
01039 {
01040     typedef Callback8<P1, P2, P3, P4, P5, P6, P7, P8> TFun;
01041     typedef Callback0 TCallback;
01042     typedef impl::DispatcherBindFun8<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8> TDispatcher;
01043     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8));
01044 }
01045 
01046 
01047 
01048 // --- 9 argument(s) -----------------------------------------------------------------------------
01049 
01050 namespace impl
01051 {
01052 
01053 /** @ingroup Bind
01054  *  @internal
01055  */
01056 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01057 class DispatcherBindFun9: public BindDispatcher<R>
01058 {
01059 public:
01060     DispatcherBindFun9(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9) {}
01061 private:
01062     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_); }
01063     Fun fun_;
01064     typename CallTraits<X1>::TValue x1_;
01065     typename CallTraits<X2>::TValue x2_;
01066     typename CallTraits<X3>::TValue x3_;
01067     typename CallTraits<X4>::TValue x4_;
01068     typename CallTraits<X5>::TValue x5_;
01069     typename CallTraits<X6>::TValue x6_;
01070     typename CallTraits<X7>::TValue x7_;
01071     typename CallTraits<X8>::TValue x8_;
01072     typename CallTraits<X9>::TValue x9_;
01073 };
01074 
01075 /** @ingroup Bind
01076  *  @internal
01077  */
01078 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01079 class DispatcherBindMemFun9: public BindDispatcher<R>
01080 {
01081 public:
01082     DispatcherBindMemFun9(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9) {}
01083 private:
01084     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_); }
01085     ObjPtr obj_;
01086     Fun fun_;
01087     typename CallTraits<X1>::TValue x1_;
01088     typename CallTraits<X2>::TValue x2_;
01089     typename CallTraits<X3>::TValue x3_;
01090     typename CallTraits<X4>::TValue x4_;
01091     typename CallTraits<X5>::TValue x5_;
01092     typename CallTraits<X6>::TValue x6_;
01093     typename CallTraits<X7>::TValue x7_;
01094     typename CallTraits<X8>::TValue x8_;
01095     typename CallTraits<X9>::TValue x9_;
01096 };
01097 
01098 }
01099 
01100 /** @ingroup Bind
01101  */
01102 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01103 typename impl::BindCallback<R>::Type 
01104 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9)
01105 {
01106     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9);
01107     typedef typename impl::BindCallback<R>::Type TCallback;
01108     typedef impl::DispatcherBindFun9<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9> TDispatcher;
01109     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9));
01110 }
01111 
01112 /** @ingroup Bind
01113  */
01114 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01115 typename impl::BindCallback<R>::Type 
01116 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9)
01117 {
01118     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9);
01119     typedef typename impl::BindCallback<R>::Type TCallback;
01120     typedef impl::DispatcherBindMemFun9<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9> TDispatcher;
01121     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9));
01122 }
01123 
01124 /** @ingroup Bind
01125  */
01126 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01127 typename impl::BindCallback<R>::Type 
01128 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9)
01129 {
01130     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const;
01131     typedef typename impl::BindCallback<R>::Type TCallback;
01132     typedef impl::DispatcherBindMemFun9<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9> TDispatcher;
01133     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9));
01134 }
01135 
01136 /** @ingroup Bind
01137  */
01138 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01139 CallbackR0<R>
01140 bind(const CallbackR9<R, P1, P2, P3, P4, P5, P6, P7, P8, P9>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9)
01141 {
01142     typedef CallbackR9<R, P1, P2, P3, P4, P5, P6, P7, P8, P9> TFun;
01143     typedef CallbackR0<R> TCallback;
01144     typedef impl::DispatcherBindFun9<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9> TDispatcher;
01145     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9));
01146 }
01147 
01148 /** @ingroup Bind
01149  */
01150 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9>
01151 Callback0
01152 bind(const Callback9<P1, P2, P3, P4, P5, P6, P7, P8, P9>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9)
01153 {
01154     typedef Callback9<P1, P2, P3, P4, P5, P6, P7, P8, P9> TFun;
01155     typedef Callback0 TCallback;
01156     typedef impl::DispatcherBindFun9<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9> TDispatcher;
01157     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9));
01158 }
01159 
01160 
01161 
01162 // --- 10 argument(s) -----------------------------------------------------------------------------
01163 
01164 namespace impl
01165 {
01166 
01167 /** @ingroup Bind
01168  *  @internal
01169  */
01170 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01171 class DispatcherBindFun10: public BindDispatcher<R>
01172 {
01173 public:
01174     DispatcherBindFun10(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10) {}
01175 private:
01176     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_); }
01177     Fun fun_;
01178     typename CallTraits<X1>::TValue x1_;
01179     typename CallTraits<X2>::TValue x2_;
01180     typename CallTraits<X3>::TValue x3_;
01181     typename CallTraits<X4>::TValue x4_;
01182     typename CallTraits<X5>::TValue x5_;
01183     typename CallTraits<X6>::TValue x6_;
01184     typename CallTraits<X7>::TValue x7_;
01185     typename CallTraits<X8>::TValue x8_;
01186     typename CallTraits<X9>::TValue x9_;
01187     typename CallTraits<X10>::TValue x10_;
01188 };
01189 
01190 /** @ingroup Bind
01191  *  @internal
01192  */
01193 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01194 class DispatcherBindMemFun10: public BindDispatcher<R>
01195 {
01196 public:
01197     DispatcherBindMemFun10(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10) {}
01198 private:
01199     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_); }
01200     ObjPtr obj_;
01201     Fun fun_;
01202     typename CallTraits<X1>::TValue x1_;
01203     typename CallTraits<X2>::TValue x2_;
01204     typename CallTraits<X3>::TValue x3_;
01205     typename CallTraits<X4>::TValue x4_;
01206     typename CallTraits<X5>::TValue x5_;
01207     typename CallTraits<X6>::TValue x6_;
01208     typename CallTraits<X7>::TValue x7_;
01209     typename CallTraits<X8>::TValue x8_;
01210     typename CallTraits<X9>::TValue x9_;
01211     typename CallTraits<X10>::TValue x10_;
01212 };
01213 
01214 }
01215 
01216 /** @ingroup Bind
01217  */
01218 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01219 typename impl::BindCallback<R>::Type 
01220 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10)
01221 {
01222     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
01223     typedef typename impl::BindCallback<R>::Type TCallback;
01224     typedef impl::DispatcherBindFun10<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10> TDispatcher;
01225     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10));
01226 }
01227 
01228 /** @ingroup Bind
01229  */
01230 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01231 typename impl::BindCallback<R>::Type 
01232 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10)
01233 {
01234     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
01235     typedef typename impl::BindCallback<R>::Type TCallback;
01236     typedef impl::DispatcherBindMemFun10<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10> TDispatcher;
01237     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10));
01238 }
01239 
01240 /** @ingroup Bind
01241  */
01242 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01243 typename impl::BindCallback<R>::Type 
01244 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10)
01245 {
01246     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const;
01247     typedef typename impl::BindCallback<R>::Type TCallback;
01248     typedef impl::DispatcherBindMemFun10<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10> TDispatcher;
01249     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10));
01250 }
01251 
01252 /** @ingroup Bind
01253  */
01254 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01255 CallbackR0<R>
01256 bind(const CallbackR10<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10)
01257 {
01258     typedef CallbackR10<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10> TFun;
01259     typedef CallbackR0<R> TCallback;
01260     typedef impl::DispatcherBindFun10<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10> TDispatcher;
01261     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10));
01262 }
01263 
01264 /** @ingroup Bind
01265  */
01266 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10>
01267 Callback0
01268 bind(const Callback10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10)
01269 {
01270     typedef Callback10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10> TFun;
01271     typedef Callback0 TCallback;
01272     typedef impl::DispatcherBindFun10<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10> TDispatcher;
01273     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10));
01274 }
01275 
01276 
01277 
01278 // --- 11 argument(s) -----------------------------------------------------------------------------
01279 
01280 namespace impl
01281 {
01282 
01283 /** @ingroup Bind
01284  *  @internal
01285  */
01286 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01287 class DispatcherBindFun11: public BindDispatcher<R>
01288 {
01289 public:
01290     DispatcherBindFun11(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11) {}
01291 private:
01292     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_); }
01293     Fun fun_;
01294     typename CallTraits<X1>::TValue x1_;
01295     typename CallTraits<X2>::TValue x2_;
01296     typename CallTraits<X3>::TValue x3_;
01297     typename CallTraits<X4>::TValue x4_;
01298     typename CallTraits<X5>::TValue x5_;
01299     typename CallTraits<X6>::TValue x6_;
01300     typename CallTraits<X7>::TValue x7_;
01301     typename CallTraits<X8>::TValue x8_;
01302     typename CallTraits<X9>::TValue x9_;
01303     typename CallTraits<X10>::TValue x10_;
01304     typename CallTraits<X11>::TValue x11_;
01305 };
01306 
01307 /** @ingroup Bind
01308  *  @internal
01309  */
01310 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01311 class DispatcherBindMemFun11: public BindDispatcher<R>
01312 {
01313 public:
01314     DispatcherBindMemFun11(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11) {}
01315 private:
01316     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_); }
01317     ObjPtr obj_;
01318     Fun fun_;
01319     typename CallTraits<X1>::TValue x1_;
01320     typename CallTraits<X2>::TValue x2_;
01321     typename CallTraits<X3>::TValue x3_;
01322     typename CallTraits<X4>::TValue x4_;
01323     typename CallTraits<X5>::TValue x5_;
01324     typename CallTraits<X6>::TValue x6_;
01325     typename CallTraits<X7>::TValue x7_;
01326     typename CallTraits<X8>::TValue x8_;
01327     typename CallTraits<X9>::TValue x9_;
01328     typename CallTraits<X10>::TValue x10_;
01329     typename CallTraits<X11>::TValue x11_;
01330 };
01331 
01332 }
01333 
01334 /** @ingroup Bind
01335  */
01336 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01337 typename impl::BindCallback<R>::Type 
01338 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11)
01339 {
01340     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
01341     typedef typename impl::BindCallback<R>::Type TCallback;
01342     typedef impl::DispatcherBindFun11<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11> TDispatcher;
01343     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11));
01344 }
01345 
01346 /** @ingroup Bind
01347  */
01348 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01349 typename impl::BindCallback<R>::Type 
01350 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11)
01351 {
01352     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
01353     typedef typename impl::BindCallback<R>::Type TCallback;
01354     typedef impl::DispatcherBindMemFun11<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11> TDispatcher;
01355     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11));
01356 }
01357 
01358 /** @ingroup Bind
01359  */
01360 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01361 typename impl::BindCallback<R>::Type 
01362 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11)
01363 {
01364     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const;
01365     typedef typename impl::BindCallback<R>::Type TCallback;
01366     typedef impl::DispatcherBindMemFun11<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11> TDispatcher;
01367     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11));
01368 }
01369 
01370 /** @ingroup Bind
01371  */
01372 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01373 CallbackR0<R>
01374 bind(const CallbackR11<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11)
01375 {
01376     typedef CallbackR11<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11> TFun;
01377     typedef CallbackR0<R> TCallback;
01378     typedef impl::DispatcherBindFun11<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11> TDispatcher;
01379     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11));
01380 }
01381 
01382 /** @ingroup Bind
01383  */
01384 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11>
01385 Callback0
01386 bind(const Callback11<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11)
01387 {
01388     typedef Callback11<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11> TFun;
01389     typedef Callback0 TCallback;
01390     typedef impl::DispatcherBindFun11<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11> TDispatcher;
01391     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11));
01392 }
01393 
01394 
01395 
01396 // --- 12 argument(s) -----------------------------------------------------------------------------
01397 
01398 namespace impl
01399 {
01400 
01401 /** @ingroup Bind
01402  *  @internal
01403  */
01404 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01405 class DispatcherBindFun12: public BindDispatcher<R>
01406 {
01407 public:
01408     DispatcherBindFun12(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12) {}
01409 private:
01410     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_); }
01411     Fun fun_;
01412     typename CallTraits<X1>::TValue x1_;
01413     typename CallTraits<X2>::TValue x2_;
01414     typename CallTraits<X3>::TValue x3_;
01415     typename CallTraits<X4>::TValue x4_;
01416     typename CallTraits<X5>::TValue x5_;
01417     typename CallTraits<X6>::TValue x6_;
01418     typename CallTraits<X7>::TValue x7_;
01419     typename CallTraits<X8>::TValue x8_;
01420     typename CallTraits<X9>::TValue x9_;
01421     typename CallTraits<X10>::TValue x10_;
01422     typename CallTraits<X11>::TValue x11_;
01423     typename CallTraits<X12>::TValue x12_;
01424 };
01425 
01426 /** @ingroup Bind
01427  *  @internal
01428  */
01429 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01430 class DispatcherBindMemFun12: public BindDispatcher<R>
01431 {
01432 public:
01433     DispatcherBindMemFun12(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12) {}
01434 private:
01435     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_); }
01436     ObjPtr obj_;
01437     Fun fun_;
01438     typename CallTraits<X1>::TValue x1_;
01439     typename CallTraits<X2>::TValue x2_;
01440     typename CallTraits<X3>::TValue x3_;
01441     typename CallTraits<X4>::TValue x4_;
01442     typename CallTraits<X5>::TValue x5_;
01443     typename CallTraits<X6>::TValue x6_;
01444     typename CallTraits<X7>::TValue x7_;
01445     typename CallTraits<X8>::TValue x8_;
01446     typename CallTraits<X9>::TValue x9_;
01447     typename CallTraits<X10>::TValue x10_;
01448     typename CallTraits<X11>::TValue x11_;
01449     typename CallTraits<X12>::TValue x12_;
01450 };
01451 
01452 }
01453 
01454 /** @ingroup Bind
01455  */
01456 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01457 typename impl::BindCallback<R>::Type 
01458 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12)
01459 {
01460     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
01461     typedef typename impl::BindCallback<R>::Type TCallback;
01462     typedef impl::DispatcherBindFun12<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12> TDispatcher;
01463     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12));
01464 }
01465 
01466 /** @ingroup Bind
01467  */
01468 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01469 typename impl::BindCallback<R>::Type 
01470 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12)
01471 {
01472     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
01473     typedef typename impl::BindCallback<R>::Type TCallback;
01474     typedef impl::DispatcherBindMemFun12<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12> TDispatcher;
01475     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12));
01476 }
01477 
01478 /** @ingroup Bind
01479  */
01480 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01481 typename impl::BindCallback<R>::Type 
01482 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12)
01483 {
01484     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const;
01485     typedef typename impl::BindCallback<R>::Type TCallback;
01486     typedef impl::DispatcherBindMemFun12<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12> TDispatcher;
01487     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12));
01488 }
01489 
01490 /** @ingroup Bind
01491  */
01492 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01493 CallbackR0<R>
01494 bind(const CallbackR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12)
01495 {
01496     typedef CallbackR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> TFun;
01497     typedef CallbackR0<R> TCallback;
01498     typedef impl::DispatcherBindFun12<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12> TDispatcher;
01499     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12));
01500 }
01501 
01502 /** @ingroup Bind
01503  */
01504 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12>
01505 Callback0
01506 bind(const Callback12<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12)
01507 {
01508     typedef Callback12<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> TFun;
01509     typedef Callback0 TCallback;
01510     typedef impl::DispatcherBindFun12<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12> TDispatcher;
01511     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12));
01512 }
01513 
01514 
01515 
01516 // --- 13 argument(s) -----------------------------------------------------------------------------
01517 
01518 namespace impl
01519 {
01520 
01521 /** @ingroup Bind
01522  *  @internal
01523  */
01524 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01525 class DispatcherBindFun13: public BindDispatcher<R>
01526 {
01527 public:
01528     DispatcherBindFun13(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13) {}
01529 private:
01530     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_); }
01531     Fun fun_;
01532     typename CallTraits<X1>::TValue x1_;
01533     typename CallTraits<X2>::TValue x2_;
01534     typename CallTraits<X3>::TValue x3_;
01535     typename CallTraits<X4>::TValue x4_;
01536     typename CallTraits<X5>::TValue x5_;
01537     typename CallTraits<X6>::TValue x6_;
01538     typename CallTraits<X7>::TValue x7_;
01539     typename CallTraits<X8>::TValue x8_;
01540     typename CallTraits<X9>::TValue x9_;
01541     typename CallTraits<X10>::TValue x10_;
01542     typename CallTraits<X11>::TValue x11_;
01543     typename CallTraits<X12>::TValue x12_;
01544     typename CallTraits<X13>::TValue x13_;
01545 };
01546 
01547 /** @ingroup Bind
01548  *  @internal
01549  */
01550 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01551 class DispatcherBindMemFun13: public BindDispatcher<R>
01552 {
01553 public:
01554     DispatcherBindMemFun13(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13) {}
01555 private:
01556     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_); }
01557     ObjPtr obj_;
01558     Fun fun_;
01559     typename CallTraits<X1>::TValue x1_;
01560     typename CallTraits<X2>::TValue x2_;
01561     typename CallTraits<X3>::TValue x3_;
01562     typename CallTraits<X4>::TValue x4_;
01563     typename CallTraits<X5>::TValue x5_;
01564     typename CallTraits<X6>::TValue x6_;
01565     typename CallTraits<X7>::TValue x7_;
01566     typename CallTraits<X8>::TValue x8_;
01567     typename CallTraits<X9>::TValue x9_;
01568     typename CallTraits<X10>::TValue x10_;
01569     typename CallTraits<X11>::TValue x11_;
01570     typename CallTraits<X12>::TValue x12_;
01571     typename CallTraits<X13>::TValue x13_;
01572 };
01573 
01574 }
01575 
01576 /** @ingroup Bind
01577  */
01578 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01579 typename impl::BindCallback<R>::Type 
01580 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13)
01581 {
01582     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
01583     typedef typename impl::BindCallback<R>::Type TCallback;
01584     typedef impl::DispatcherBindFun13<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13> TDispatcher;
01585     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13));
01586 }
01587 
01588 /** @ingroup Bind
01589  */
01590 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01591 typename impl::BindCallback<R>::Type 
01592 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13)
01593 {
01594     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
01595     typedef typename impl::BindCallback<R>::Type TCallback;
01596     typedef impl::DispatcherBindMemFun13<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13> TDispatcher;
01597     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13));
01598 }
01599 
01600 /** @ingroup Bind
01601  */
01602 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01603 typename impl::BindCallback<R>::Type 
01604 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13)
01605 {
01606     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const;
01607     typedef typename impl::BindCallback<R>::Type TCallback;
01608     typedef impl::DispatcherBindMemFun13<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13> TDispatcher;
01609     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13));
01610 }
01611 
01612 /** @ingroup Bind
01613  */
01614 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01615 CallbackR0<R>
01616 bind(const CallbackR13<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13)
01617 {
01618     typedef CallbackR13<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13> TFun;
01619     typedef CallbackR0<R> TCallback;
01620     typedef impl::DispatcherBindFun13<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13> TDispatcher;
01621     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13));
01622 }
01623 
01624 /** @ingroup Bind
01625  */
01626 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13>
01627 Callback0
01628 bind(const Callback13<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13)
01629 {
01630     typedef Callback13<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13> TFun;
01631     typedef Callback0 TCallback;
01632     typedef impl::DispatcherBindFun13<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13> TDispatcher;
01633     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13));
01634 }
01635 
01636 
01637 
01638 // --- 14 argument(s) -----------------------------------------------------------------------------
01639 
01640 namespace impl
01641 {
01642 
01643 /** @ingroup Bind
01644  *  @internal
01645  */
01646 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01647 class DispatcherBindFun14: public BindDispatcher<R>
01648 {
01649 public:
01650     DispatcherBindFun14(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13), x14_(x14) {}
01651 private:
01652     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_, x14_); }
01653     Fun fun_;
01654     typename CallTraits<X1>::TValue x1_;
01655     typename CallTraits<X2>::TValue x2_;
01656     typename CallTraits<X3>::TValue x3_;
01657     typename CallTraits<X4>::TValue x4_;
01658     typename CallTraits<X5>::TValue x5_;
01659     typename CallTraits<X6>::TValue x6_;
01660     typename CallTraits<X7>::TValue x7_;
01661     typename CallTraits<X8>::TValue x8_;
01662     typename CallTraits<X9>::TValue x9_;
01663     typename CallTraits<X10>::TValue x10_;
01664     typename CallTraits<X11>::TValue x11_;
01665     typename CallTraits<X12>::TValue x12_;
01666     typename CallTraits<X13>::TValue x13_;
01667     typename CallTraits<X14>::TValue x14_;
01668 };
01669 
01670 /** @ingroup Bind
01671  *  @internal
01672  */
01673 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01674 class DispatcherBindMemFun14: public BindDispatcher<R>
01675 {
01676 public:
01677     DispatcherBindMemFun14(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13), x14_(x14) {}
01678 private:
01679     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_, x14_); }
01680     ObjPtr obj_;
01681     Fun fun_;
01682     typename CallTraits<X1>::TValue x1_;
01683     typename CallTraits<X2>::TValue x2_;
01684     typename CallTraits<X3>::TValue x3_;
01685     typename CallTraits<X4>::TValue x4_;
01686     typename CallTraits<X5>::TValue x5_;
01687     typename CallTraits<X6>::TValue x6_;
01688     typename CallTraits<X7>::TValue x7_;
01689     typename CallTraits<X8>::TValue x8_;
01690     typename CallTraits<X9>::TValue x9_;
01691     typename CallTraits<X10>::TValue x10_;
01692     typename CallTraits<X11>::TValue x11_;
01693     typename CallTraits<X12>::TValue x12_;
01694     typename CallTraits<X13>::TValue x13_;
01695     typename CallTraits<X14>::TValue x14_;
01696 };
01697 
01698 }
01699 
01700 /** @ingroup Bind
01701  */
01702 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01703 typename impl::BindCallback<R>::Type 
01704 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14)
01705 {
01706     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
01707     typedef typename impl::BindCallback<R>::Type TCallback;
01708     typedef impl::DispatcherBindFun14<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14> TDispatcher;
01709     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14));
01710 }
01711 
01712 /** @ingroup Bind
01713  */
01714 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01715 typename impl::BindCallback<R>::Type 
01716 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14)
01717 {
01718     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
01719     typedef typename impl::BindCallback<R>::Type TCallback;
01720     typedef impl::DispatcherBindMemFun14<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14> TDispatcher;
01721     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14));
01722 }
01723 
01724 /** @ingroup Bind
01725  */
01726 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01727 typename impl::BindCallback<R>::Type 
01728 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14)
01729 {
01730     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const;
01731     typedef typename impl::BindCallback<R>::Type TCallback;
01732     typedef impl::DispatcherBindMemFun14<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14> TDispatcher;
01733     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14));
01734 }
01735 
01736 /** @ingroup Bind
01737  */
01738 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01739 CallbackR0<R>
01740 bind(const CallbackR14<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14)
01741 {
01742     typedef CallbackR14<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14> TFun;
01743     typedef CallbackR0<R> TCallback;
01744     typedef impl::DispatcherBindFun14<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14> TDispatcher;
01745     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14));
01746 }
01747 
01748 /** @ingroup Bind
01749  */
01750 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14>
01751 Callback0
01752 bind(const Callback14<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14)
01753 {
01754     typedef Callback14<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14> TFun;
01755     typedef Callback0 TCallback;
01756     typedef impl::DispatcherBindFun14<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14> TDispatcher;
01757     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14));
01758 }
01759 
01760 
01761 
01762 // --- 15 argument(s) -----------------------------------------------------------------------------
01763 
01764 namespace impl
01765 {
01766 
01767 /** @ingroup Bind
01768  *  @internal
01769  */
01770 template <typename R, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01771 class DispatcherBindFun15: public BindDispatcher<R>
01772 {
01773 public:
01774     DispatcherBindFun15(Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15): fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13), x14_(x14), x15_(x15) {}
01775 private:
01776     R doCall() const { return fun_(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_, x14_, x15_); }
01777     Fun fun_;
01778     typename CallTraits<X1>::TValue x1_;
01779     typename CallTraits<X2>::TValue x2_;
01780     typename CallTraits<X3>::TValue x3_;
01781     typename CallTraits<X4>::TValue x4_;
01782     typename CallTraits<X5>::TValue x5_;
01783     typename CallTraits<X6>::TValue x6_;
01784     typename CallTraits<X7>::TValue x7_;
01785     typename CallTraits<X8>::TValue x8_;
01786     typename CallTraits<X9>::TValue x9_;
01787     typename CallTraits<X10>::TValue x10_;
01788     typename CallTraits<X11>::TValue x11_;
01789     typename CallTraits<X12>::TValue x12_;
01790     typename CallTraits<X13>::TValue x13_;
01791     typename CallTraits<X14>::TValue x14_;
01792     typename CallTraits<X15>::TValue x15_;
01793 };
01794 
01795 /** @ingroup Bind
01796  *  @internal
01797  */
01798 template <typename R, typename ObjPtr, typename Fun, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01799 class DispatcherBindMemFun15: public BindDispatcher<R>
01800 {
01801 public:
01802     DispatcherBindMemFun15(ObjPtr obj, Fun fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15): obj_(obj), fun_(fun), x1_(x1), x2_(x2), x3_(x3), x4_(x4), x5_(x5), x6_(x6), x7_(x7), x8_(x8), x9_(x9), x10_(x10), x11_(x11), x12_(x12), x13_(x13), x14_(x14), x15_(x15) {}
01803 private:
01804     R doCall() const { return ((*obj_).*fun_)(x1_, x2_, x3_, x4_, x5_, x6_, x7_, x8_, x9_, x10_, x11_, x12_, x13_, x14_, x15_); }
01805     ObjPtr obj_;
01806     Fun fun_;
01807     typename CallTraits<X1>::TValue x1_;
01808     typename CallTraits<X2>::TValue x2_;
01809     typename CallTraits<X3>::TValue x3_;
01810     typename CallTraits<X4>::TValue x4_;
01811     typename CallTraits<X5>::TValue x5_;
01812     typename CallTraits<X6>::TValue x6_;
01813     typename CallTraits<X7>::TValue x7_;
01814     typename CallTraits<X8>::TValue x8_;
01815     typename CallTraits<X9>::TValue x9_;
01816     typename CallTraits<X10>::TValue x10_;
01817     typename CallTraits<X11>::TValue x11_;
01818     typename CallTraits<X12>::TValue x12_;
01819     typename CallTraits<X13>::TValue x13_;
01820     typename CallTraits<X14>::TValue x14_;
01821     typename CallTraits<X15>::TValue x15_;
01822 };
01823 
01824 }
01825 
01826 /** @ingroup Bind
01827  */
01828 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01829 typename impl::BindCallback<R>::Type 
01830 bind(R (*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15), X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15)
01831 {
01832     typedef R (*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
01833     typedef typename impl::BindCallback<R>::Type TCallback;
01834     typedef impl::DispatcherBindFun15<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15> TDispatcher;
01835     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15));
01836 }
01837 
01838 /** @ingroup Bind
01839  */
01840 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01841 typename impl::BindCallback<R>::Type 
01842 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15), ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15)
01843 {
01844     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
01845     typedef typename impl::BindCallback<R>::Type TCallback;
01846     typedef impl::DispatcherBindMemFun15<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15> TDispatcher;
01847     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15));
01848 }
01849 
01850 /** @ingroup Bind
01851  */
01852 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename Obj, typename ObjPtr, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01853 typename impl::BindCallback<R>::Type 
01854 bind(R (Obj::*fun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const, ObjPtr obj, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15)
01855 {
01856     typedef R (Obj::*TFun)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const;
01857     typedef typename impl::BindCallback<R>::Type TCallback;
01858     typedef impl::DispatcherBindMemFun15<R, ObjPtr, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15> TDispatcher;
01859     return TCallback(TDispatcher(obj, fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15));
01860 }
01861 
01862 /** @ingroup Bind
01863  */
01864 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01865 CallbackR0<R>
01866 bind(const CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15)
01867 {
01868     typedef CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> TFun;
01869     typedef CallbackR0<R> TCallback;
01870     typedef impl::DispatcherBindFun15<R, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15> TDispatcher;
01871     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15));
01872 }
01873 
01874 /** @ingroup Bind
01875  */
01876 template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename X1, typename X2, typename X3, typename X4, typename X5, typename X6, typename X7, typename X8, typename X9, typename X10, typename X11, typename X12, typename X13, typename X14, typename X15>
01877 Callback0
01878 bind(const Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& fun, X1 x1, X2 x2, X3 x3, X4 x4, X5 x5, X6 x6, X7 x7, X8 x8, X9 x9, X10 x10, X11 x11, X12 x12, X13 x13, X14 x14, X15 x15)
01879 {
01880     typedef Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> TFun;
01881     typedef Callback0 TCallback;
01882     typedef impl::DispatcherBindFun15<void, TFun, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15> TDispatcher;
01883     return TCallback(TDispatcher(fun, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15));
01884 }
01885 
01886 
01887 
01888 }
01889 
01890 }
01891 
01892 #if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
01893 #   pragma warning(pop)
01894 #endif
01895 
01896 #endif
01897 
01898 // EOF

Generated on Mon Nov 10 14:20:00 2008 for Library of Assembled Shared Sources by doxygen 1.5.7.1
SourceForge.net Logo