4#include <interface/STaskLoop-i.h>
5#include <interface/SMsgLoop-i.h>
7#include <helper/obj-ref-impl.hpp>
8#if !defined(_WIN32) || _MSC_VER >= 1700
9#define ENABLE_STD_FUNCTIONAL 1
11#define ENABLE_STD_FUNCTIONAL 0
14#if ENABLE_STD_FUNCTIONAL
18#ifndef __PRETTY_FUNCTION__
19#define __PRETTY_FUNCTION__ __FUNCTION__
26 SRunnable(
void *pObj = NULL)
33 STDMETHOD_(
void *, getObject)(THIS)
42#define IMPL_GETCLASSINFO \
44 STDMETHOD_(const char *, getClassInfo)(THIS) SCONST \
46 return __PRETTY_FUNCTION__; \
49#if ENABLE_STD_FUNCTIONAL
51class StdRunnable :
public SRunnable {
54 StdRunnable(
const std::function<
void(
void)> &fun)
59 StdRunnable(
void *pObj,
const std::function<
void(
void)> &fun)
65 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
67 return new StdRunnable(_pObj, _func);
70 STDMETHOD_(
void, run)(THIS)
76 std::function<void(
void)> _func;
80template <
typename TClass,
typename Func>
81class SFunctor0 :
public SRunnable {
84 SFunctor0(TClass *obj, Func func)
90 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
92 return new SFunctor0((TClass *)_pObj, _func);
95 STDMETHOD_(
void, run)(THIS)
97 (((TClass *)getObject())->*_func)();
104template <
typename TClass,
typename Func,
typename T1>
105class SFunctor1 :
public SRunnable {
108 SFunctor1(TClass *obj, Func func, T1 param1)
114 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
116 return new SFunctor1((TClass *)_pObj, _func, _param1);
119 STDMETHOD_(
void, run)(THIS)
121 (((TClass *)getObject())->*_func)(_param1);
129template <
typename TClass,
typename Func,
typename T1,
typename T2>
130class SFunctor2 :
public SRunnable {
133 SFunctor2(TClass *obj, Func func, T1 param1, T2 param2)
141 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
143 return new SFunctor2((TClass *)_pObj, _func, _param1, _param2);
146 STDMETHOD_(
void, run)(THIS)
148 (((TClass *)getObject())->*_func)(_param1, _param2);
157template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3>
158class SFunctor3 :
public SRunnable {
161 SFunctor3(TClass *obj, Func func, T1 param1, T2 param2, T3 param3)
170 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
172 return new SFunctor3((TClass *)_pObj, _func, _param1, _param2, _param3);
175 STDMETHOD_(
void, run)(THIS)
177 (((TClass *)getObject())->*_func)(_param1, _param2, _param3);
187template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4>
188class SFunctor4 :
public SRunnable {
191 SFunctor4(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4)
201 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
203 return new SFunctor4((TClass *)_pObj, _func, _param1, _param2, _param3, _param4);
206 STDMETHOD_(
void, run)(THIS)
208 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4);
219template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
220class SFunctor5 :
public SRunnable {
223 SFunctor5(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5)
234 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
236 return new SFunctor5((TClass *)_pObj, _func, _param1, _param2, _param3, _param4, _param5);
239 STDMETHOD_(
void, run)(THIS)
241 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4, _param5);
253template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
254class SFunctor6 :
public SRunnable {
257 SFunctor6(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6)
269 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
271 return new SFunctor6((TClass *)_pObj, _func, _param1, _param2, _param3, _param4, _param5, _param6);
274 STDMETHOD_(
void, run)(THIS)
276 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4, _param5, _param6);
289template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
290class SFunctor7 :
public SRunnable {
293 SFunctor7(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6, T7 param7)
305 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
307 return new SFunctor7((TClass *)_pObj, _func, _param1, _param2, _param3, _param4, _param5, _param6, _param7);
310 STDMETHOD_(
void, run)(THIS)
312 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4, _param5, _param6, _param7);
326template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
327class SFunctor8 :
public SRunnable {
330 SFunctor8(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6, T7 param7, T8 param8)
344 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
346 return new SFunctor8((TClass *)_pObj, _func, _param1, _param2, _param3, _param4, _param5, _param6, _param7, _param8);
349 STDMETHOD_(
void, run)(THIS)
351 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4, _param5, _param6, _param7, _param8);
366template <
typename TClass,
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
367class SFunctor9 :
public SRunnable {
370 SFunctor9(TClass *obj, Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6, T7 param7, T8 param8, T9 param9)
385 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
387 return new SFunctor9((TClass *)_pObj, _func, _param1, _param2, _param3, _param4, _param5, _param6, _param7, _param8, _param9);
390 STDMETHOD_(
void, run)(THIS)
392 (((TClass *)getObject())->*_func)(_param1, _param2, _param3, _param4, _param5, _param6, _param7, _param8, _param9);
408template <
typename Func>
409class StaticSFunctor0 :
public SRunnable {
412 StaticSFunctor0(Func func)
417 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
419 return new StaticSFunctor0(_func);
422 STDMETHOD_(
void, run)(THIS)
431template <
typename Func,
typename T1>
432class StaticSFunctor1 :
public SRunnable {
435 StaticSFunctor1(Func func, T1 param1)
441 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
443 return new StaticSFunctor1(_func, _param1);
446 STDMETHOD_(
void, run)(THIS)
456template <
typename Func,
typename T1,
typename T2>
457class StaticSFunctor2 :
public SRunnable {
460 StaticSFunctor2(Func func, T1 param1, T2 param2)
467 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
469 return new StaticSFunctor2(_func, _param1, _param2);
472 STDMETHOD_(
void, run)(THIS)
474 (*_func)(_param1, _param2);
483template <
typename Func,
typename T1,
typename T2,
typename T3>
484class StaticSFunctor3 :
public SRunnable {
487 StaticSFunctor3(Func func, T1 param1, T2 param2, T3 param3)
495 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
497 return new StaticSFunctor3(_func, _param1, _param2, _param3);
500 STDMETHOD_(
void, run)(THIS)
502 (*_func)(_param1, _param2, _param3);
512template <
typename Func,
typename T1,
typename T2,
typename T3,
typename T4>
513class StaticSFunctor4 :
public SRunnable {
516 StaticSFunctor4(Func func, T1 param1, T2 param2, T3 param3, T4 param4)
525 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
527 return new StaticSFunctor4(_func, _param1, _param2, _param3, _param4);
530 STDMETHOD_(
void, run)(THIS)
532 (*_func)(_param1, _param2, _param3, _param4);
543template <
typename Func,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
544class StaticSFunctor5 :
public SRunnable {
547 StaticSFunctor5(Func func, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5)
557 STDMETHOD_(IRunnable *, clone)(THIS) SCONST
559 return new StaticSFunctor5(_func, _param1, _param2, _param3, _param4, _param5);
562 STDMETHOD_(
void, run)(THIS)
564 (*_func)(_param1, _param2, _param3, _param4, _param5);
578 template <
typename TClass,
typename Fun>
579 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun,
bool waitUntilDone,
int nPriority = 0)
581 SFunctor0<TClass, Fun> runnable(pObj, fun);
582 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
585 template <
typename TClass,
typename Fun,
typename P1>
586 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1,
bool waitUntilDone,
int nPriority = 0)
588 SFunctor1<TClass, Fun, P1> runnable(pObj, fun, p1);
589 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
592 template <
typename TClass,
typename Fun,
typename P1,
typename P2>
593 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2,
bool waitUntilDone,
int nPriority = 0)
595 SFunctor2<TClass, Fun, P1, P2> runnable(pObj, fun, p1, p2);
596 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
599 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3>
600 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3,
bool waitUntilDone,
int nPriority = 0)
602 SFunctor3<TClass, Fun, P1, P2, P3> runnable(pObj, fun, p1, p2, p3);
603 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
606 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4>
607 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4,
bool waitUntilDone,
int nPriority = 0)
609 SFunctor4<TClass, Fun, P1, P2, P3, P4> runnable(pObj, fun, p1, p2, p3, p4);
610 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
613 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5>
614 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5,
bool waitUntilDone,
int nPriority = 0)
616 SFunctor5<TClass, Fun, P1, P2, P3, P4, P5> runnable(pObj, fun, p1, p2, p3, p4, p5);
617 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
620 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6>
621 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
bool waitUntilDone,
int nPriority = 0)
623 SFunctor6<TClass, Fun, P1, P2, P3, P4, P5, P6> runnable(pObj, fun, p1, p2, p3, p4, p5, p6);
624 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
627 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7>
628 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7,
bool waitUntilDone,
int nPriority = 0)
630 SFunctor7<TClass, Fun, P1, P2, P3, P4, P5, P6, P7> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7);
631 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
634 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8>
635 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8,
bool waitUntilDone,
int nPriority = 0)
637 SFunctor8<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8);
638 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
641 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9>
642 static long post(ITaskLoop *pTaskLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
bool waitUntilDone,
int nPriority = 0)
644 SFunctor9<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8, P9> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8, p9);
645 return pTaskLoop->postTask(&runnable, waitUntilDone, nPriority);
649 template <
typename TClass,
typename Fun>
650 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun)
652 SFunctor0<TClass, Fun> runnable(pObj, fun);
656 template <
typename TClass,
typename Fun,
typename P1>
657 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1)
659 SFunctor1<TClass, Fun, P1> runnable(pObj, fun, p1);
663 template <
typename TClass,
typename Fun,
typename P1,
typename P2>
664 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2)
666 SFunctor2<TClass, Fun, P1, P2> runnable(pObj, fun, p1, p2);
670 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3>
671 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3)
673 SFunctor3<TClass, Fun, P1, P2, P3> runnable(pObj, fun, p1, p2, p3);
677 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4>
678 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4)
680 SFunctor4<TClass, Fun, P1, P2, P3, P4> runnable(pObj, fun, p1, p2, p3, p4);
684 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5>
685 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
687 SFunctor5<TClass, Fun, P1, P2, P3, P4, P5> runnable(pObj, fun, p1, p2, p3, p4, p5);
691 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6>
692 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
694 SFunctor6<TClass, Fun, P1, P2, P3, P4, P5, P6> runnable(pObj, fun, p1, p2, p3, p4, p5, p6);
698 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7>
699 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
701 SFunctor7<TClass, Fun, P1, P2, P3, P4, P5, P6, P7> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7);
705 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8>
706 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
708 SFunctor8<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8);
712 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9>
713 static void post(IMessageLoop *pMsgLoop, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9)
715 SFunctor9<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8, P9> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8, p9);
720 template <
typename TClass,
typename Fun>
721 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun)
723 SFunctor0<TClass, Fun> runnable(pObj, fun);
727 template <
typename TClass,
typename Fun,
typename P1>
728 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1)
730 SFunctor1<TClass, Fun, P1> runnable(pObj, fun, p1);
734 template <
typename TClass,
typename Fun,
typename P1,
typename P2>
735 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2)
737 SFunctor2<TClass, Fun, P1, P2> runnable(pObj, fun, p1, p2);
741 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3>
742 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3)
744 SFunctor3<TClass, Fun, P1, P2, P3> runnable(pObj, fun, p1, p2, p3);
748 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4>
749 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4)
751 SFunctor4<TClass, Fun, P1, P2, P3, P4> runnable(pObj, fun, p1, p2, p3, p4);
755 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5>
756 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
758 SFunctor5<TClass, Fun, P1, P2, P3, P4, P5> runnable(pObj, fun, p1, p2, p3, p4, p5);
762 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6>
763 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
765 SFunctor6<TClass, Fun, P1, P2, P3, P4, P5, P6> runnable(pObj, fun, p1, p2, p3, p4, p5, p6);
769 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7>
770 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
772 SFunctor7<TClass, Fun, P1, P2, P3, P4, P5, P6, P7> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7);
776 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8>
777 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
779 SFunctor8<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8);
783 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9>
784 static void postTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9)
786 SFunctor9<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8, P9> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8, p9);
791 template <
typename TClass,
typename Fun>
792 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun)
794 SFunctor0<TClass, Fun> runnable(pObj, fun);
795 pContainer->
PostTask(&runnable, FALSE);
798 template <
typename TClass,
typename Fun,
typename P1>
799 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1)
801 SFunctor1<TClass, Fun, P1> runnable(pObj, fun, p1);
802 pContainer->
PostTask(&runnable, FALSE);
805 template <
typename TClass,
typename Fun,
typename P1,
typename P2>
806 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2)
808 SFunctor2<TClass, Fun, P1, P2> runnable(pObj, fun, p1, p2);
809 pContainer->
PostTask(&runnable, FALSE);
812 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3>
813 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3)
815 SFunctor3<TClass, Fun, P1, P2, P3> runnable(pObj, fun, p1, p2, p3);
816 pContainer->
PostTask(&runnable, FALSE);
819 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4>
820 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4)
822 SFunctor4<TClass, Fun, P1, P2, P3, P4> runnable(pObj, fun, p1, p2, p3, p4);
823 pContainer->
PostTask(&runnable, FALSE);
826 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5>
827 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
829 SFunctor5<TClass, Fun, P1, P2, P3, P4, P5> runnable(pObj, fun, p1, p2, p3, p4, p5);
830 pContainer->
PostTask(&runnable, FALSE);
833 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6>
834 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
836 SFunctor6<TClass, Fun, P1, P2, P3, P4, P5, P6> runnable(pObj, fun, p1, p2, p3, p4, p5, p6);
837 pContainer->
PostTask(&runnable, FALSE);
840 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7>
841 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
843 SFunctor7<TClass, Fun, P1, P2, P3, P4, P5, P6, P7> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7);
844 pContainer->
PostTask(&runnable, FALSE);
847 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8>
848 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
850 SFunctor8<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8);
851 pContainer->
PostTask(&runnable, FALSE);
854 template <
typename TClass,
typename Fun,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9>
855 static void sendTask(ISwndContainer *pContainer, TClass *pObj, Fun fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9)
857 SFunctor9<TClass, Fun, P1, P2, P3, P4, P5, P6, P7, P8, P9> runnable(pObj, fun, p1, p2, p3, p4, p5, p6, p7, p8, p9);
858 pContainer->
PostTask(&runnable, FALSE);
Template class implementing the IObjRef interface.
BOOL PostTask(IRunnable *runable) PURE
Posts a task to the message loop.
BOOL PostTask(IRunnable *runable, BOOL bAsync=TRUE) PURE
Posts a task to the message queue.