00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
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
00143
00144
00145 template <typename R> struct BindCallback { typedef CallbackR0<R> Type; };
00146 template <> struct BindCallback<void> { typedef Callback0 Type; };
00147
00148
00149
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
00163
00164
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
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
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
00192
00193 inline Callback0 bind(const Callback0& fun)
00194 {
00195 return fun;
00196 }
00197
00198
00199
00200 template <typename R>
00201 CallbackR0<R> bind(const CallbackR0<R>& fun)
00202 {
00203 return fun;
00204 }
00205
00206
00207
00208
00209
00210 namespace impl
00211 {
00212
00213
00214
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
00228
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
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
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
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
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
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
00307
00308 namespace impl
00309 {
00310
00311
00312
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
00327
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
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
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
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
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
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
00407
00408 namespace impl
00409 {
00410
00411
00412
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
00428
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
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
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
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
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
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
00509
00510 namespace impl
00511 {
00512
00513
00514
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
00531
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
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
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
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
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
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
00613
00614 namespace impl
00615 {
00616
00617
00618
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
00636
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
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
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
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
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
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
00719
00720 namespace impl
00721 {
00722
00723
00724
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
00743
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
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
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
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
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
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
00827
00828 namespace impl
00829 {
00830
00831
00832
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
00852
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
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
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
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
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
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
00937
00938 namespace impl
00939 {
00940
00941
00942
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
00963
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
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
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
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
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
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
01049
01050 namespace impl
01051 {
01052
01053
01054
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
01076
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
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
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
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
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
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
01163
01164 namespace impl
01165 {
01166
01167
01168
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
01191
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
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
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
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
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
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
01279
01280 namespace impl
01281 {
01282
01283
01284
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
01308
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
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
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
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
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
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
01397
01398 namespace impl
01399 {
01400
01401
01402
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
01427
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
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
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
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
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
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
01517
01518 namespace impl
01519 {
01520
01521
01522
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
01548
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
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
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
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
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
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
01639
01640 namespace impl
01641 {
01642
01643
01644
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
01671
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
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
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
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
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
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
01763
01764 namespace impl
01765 {
01766
01767
01768
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
01796
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
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
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
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
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
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