41#if !defined(BDTF_H) && !defined(OWL_FUNCTOR_H)
46#if defined(BI_HAS_PRAGMA_ONCE)
52#if defined(BI_NO_LVAL_CASTS)
53#define THUNKREF(th) th
55#define THUNKREF(th) const th &
70 operator bool()
const {
return Func ||
Callee;}
74 : Func(nullptr),
Callee(nullptr) {}
103template <
class Funct>
110 (Funct(ftor.Func))();
114template <
class TCallee,
class TMemFunc>
122 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
123 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
124 (callee->*memFunc)();
135template <
class TCallee,
class TRT,
class TCallType>
139 typedef TRT (TCallType::*TMemFunc)();
143template <
class TCallee,
class TRT,
class TCallType>
147 typedef TRT (TCallType::*TMemFunc)()
const;
172template <
class R,
class Funct>
179 return (Funct(ftor.Func))();
183template <
class R,
class TCallee,
class TMemFunc>
191 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
192 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
193 return (callee->*memFunc)();
197template <
class R,
class TRT>
204template <
class R,
class TCallee,
class TRT,
class TCallType>
208 typedef TRT (TCallType::*TMemFunc)();
212template <
class R,
class TCallee,
class TRT,
class TCallType>
216 typedef TRT (TCallType::*TMemFunc)()
const;
242template <
class P1,
class Funct>
249 (Funct(ftor.Func))(p1);
253template <
class P1,
class TCallee,
class TMemFunc>
261 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
262 TMemFunc& memFunc(*
reinterpret_cast<TMemFunc*
>((
void*)ftor.MemberFunc));
263 (callee->*memFunc)(p1);
267template <
class P1,
class TRT,
class TP1>
274template <
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
278 typedef TRT (TCallType::*TMemFunc)(TP1);
282template <
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
286 typedef TRT (TCallType::*TMemFunc)(TP1)
const;
293template <
class R,
class P1>
300 return Thunk(*
this, p1);
312template <
class R,
class P1,
class Funct>
319 return (Funct(ftor.Func))(p1);
323template <
class R,
class P1,
class TCallee,
class TMemFunc>
331 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
332 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
333 return (callee->*memFunc)(p1);
337template <
class R,
class P1,
class TRT,
class TP1>
338inline TFunctor1<R,P1>
344template <
class R,
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
345inline TFunctor1<R,P1>
348 typedef TRT (TCallType::*TMemFunc)(TP1);
352template <
class R,
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
353inline TFunctor1<R,P1>
356 typedef TRT (TCallType::*TMemFunc)(TP1)
const;
363template <
class P1,
class P2>
370 Thunk(*
this, p1, p2);
382template <
class P1,
class P2,
class Funct>
389 (Funct(ftor.Func))(p1, p2);
393template <
class P1,
class P2,
class TCallee,
class TMemFunc>
401 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
402 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
403 (callee->*memFunc)(p1, p2);
407template <
class P1,
class P2,
class TRT,
class TP1,
class TP2>
408inline TFunctorV2<P1,P2>
414template <
class P1,
class P2,
415 class TCallee,
class TRT,
class TCallType,
416 class TP1,
class TP2>
417inline TFunctorV2<P1,P2>
420 typedef TRT (TCallType::*TMemFunc)(TP1,TP2);
424template <
class P1,
class P2,
425 class TCallee,
class TRT,
class TCallType,
426 class TP1,
class TP2>
427inline TFunctorV2<P1,P2>
430 typedef TRT (TCallType::*TMemFunc)(TP1,TP2)
const;
437template <
class R,
class P1,
class P2>
444 return Thunk(*
this, p1, p2);
447 operator bool()
const {
return bool();}
458template <
class R,
class P1,
class P2,
class Funct>
465 return (Funct(ftor.Func))(p1, p2);
469template <
class R,
class P1,
class P2,
class TCallee,
class TMemFunc>
477 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
478 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
479 return (callee->*memFunc)(p1, p2);
483template <
class R,
class P1,
class P2,
class TRT,
class TP1,
class TP2>
484inline TFunctor2<R,P1,P2>
490template <
class R,
class P1,
class P2,
491 class TCallee,
class TRT,
class TCallType,
492 class TP1,
class TP2>
493inline TFunctor2<R,P1,P2>
496 typedef TRT (TCallType::*TMemFunc)(TP1,TP2);
500template <
class R,
class P1,
class P2,
501 class TCallee,
class TRT,
class TCallType,
502 class TP1,
class TP2>
503inline TFunctor2<R,P1,P2>
506 typedef TRT (TCallType::*TMemFunc)(TP1,TP2)
const;
513template <
class P1,
class P2,
class P3>
520 Thunk(*
this, p1, p2, p3);
532template <
class P1,
class P2,
class P3,
class Funct>
539 (Funct(ftor.Func))(p1, p2, p3);
543template <
class P1,
class P2,
class P3,
class TCallee,
class TMemFunc>
551 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
552 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
553 (callee->*memFunc)(p1, p2, p3);
557template <
class P1,
class P2,
class P3,
558 class TRT,
class TP1,
class TP2,
class TP3>
559inline TFunctorV3<P1,P2,P3>
565template <
class P1,
class P2,
class P3,
566 class TCallee,
class TRT,
class CallType,
567 class TP1,
class TP2,
class TP3>
568inline TFunctorV3<P1,P2,P3>
571 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3);
575template <
class P1,
class P2,
class P3,
576 class TCallee,
class TRT,
class CallType,
577 class TP1,
class TP2,
class TP3>
578inline TFunctorV3<P1,P2,P3>
581 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3)
const;
588template <
class R,
class P1,
class P2,
class P3>
595 return Thunk(*
this, p1, p2, p3);
607template <
class R,
class P1,
class P2,
class P3,
class Funct>
614 return (Funct(ftor.Func))(p1, p2, p3);
618template <
class R,
class P1,
class P2,
class P3,
class TCallee,
class TMemFunc>
626 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
627 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
628 return (callee->*memFunc)(p1, p2, p3);
632template <
class R,
class P1,
class P2,
class P3,
633 class TRT,
class TP1,
class TP2,
class TP3>
634inline TFunctor3<R,P1,P2,P3>
640template <
class R,
class P1,
class P2,
class P3,
641 class TCallee,
class TRT,
class CallType,
642 class TP1,
class TP2,
class TP3>
643inline TFunctor3<R,P1,P2,P3>
646 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3);
650template <
class R,
class P1,
class P2,
class P3,
651 class TCallee,
class TRT,
class CallType,
652 class TP1,
class TP2,
class TP3>
653inline TFunctor3<R,P1,P2,P3>
656 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3)
const;
663template <
class P1,
class P2,
class P3,
class P4>
670 Thunk(*
this, p1, p2, p3, p4);
682template <
class P1,
class P2,
class P3,
class P4,
class Funct>
689 (Funct(ftor.Func))(p1, p2, p3, p4);
693template <
class P1,
class P2,
class P3,
class P4,
class TCallee,
class TMemFunc>
701 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
702 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
703 (callee->*memFunc)(p1, p2, p3, p4);
707template <
class P1,
class P2,
class P3,
class P4,
708 class TRT,
class TP1,
class TP2,
class TP3,
class TP4>
709inline TFunctorV4<P1,P2,P3,P4>
715template <
class P1,
class P2,
class P3,
class P4,
class TCallee,
716 class TRT,
class CallType,
717 class TP1,
class TP2,
class TP3,
class TP4>
718inline TFunctorV4<P1,P2,P3,P4>
721 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4);
725template <
class P1,
class P2,
class P3,
class P4,
726 class TCallee,
class TRT,
class CallType,
727 class TP1,
class TP2,
class TP3,
class TP4>
728inline TFunctorV4<P1,P2,P3,P4>
731 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4)
const;
738template <
class R,
class P1,
class P2,
class P3,
class P4>
745 return Thunk(*
this, p1, p2, p3, p4);
757template <
class R,
class P1,
class P2,
class P3,
class P4,
class Funct>
764 return (Funct(ftor.Func))(p1, p2, p3, p4);
768template <
class R,
class P1,
class P2,
class P3,
class P4,
class TCallee,
class TMemFunc>
776 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
777 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
778 return (callee->*memFunc)(p1, p2, p3, p4);
782template <
class R,
class P1,
class P2,
class P3,
class P4,
783 class TRT,
class TP1,
class TP2,
class TP3,
class TP4>
784inline TFunctor4<R,P1,P2,P3,P4>
790template <
class R,
class P1,
class P2,
class P3,
class P4,
791 class TCallee,
class TRT,
class CallType,
792 class TP1,
class TP2,
class TP3,
class TP4>
793inline TFunctor4<R,P1,P2,P3,P4>
796 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4);
800template <
class R,
class P1,
class P2,
class P3,
class P4,
801 class TCallee,
class TRT,
class CallType,
802 class TP1,
class TP2,
class TP3,
class TP4>
803inline TFunctor4<R,P1,P2,P3,P4>
806 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4)
const;
813template <
class P1,
class P2,
class P3,
class P4,
class P5>
820 Thunk(*
this, p1, p2, p3, p4, p5);
832template <
class P1,
class P2,
class P3,
class P4,
class P5,
class Funct>
839 (Funct(ftor.Func))(p1, p2, p3, p4, p5);
843template <
class P1,
class P2,
class P3,
class P4,
class P5,
class TCallee,
class TMemFunc>
851 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
852 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
853 (callee->*memFunc)(p1, p2, p3, p4, p5);
857template <
class P1,
class P2,
class P3,
class P4,
class P5,
858 class TRT,
class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
859inline TFunctorV5<P1,P2,P3,P4,P5>
865template <
class P1,
class P2,
class P3,
class P4,
class P5,
866 class TCallee,
class TRT,
class CallType,
867 class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
868inline TFunctorV5<P1,P2,P3,P4,P5>
869Functor(
TFunctorV5<P1,P2,P3,P4,P5>*, TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5))
871 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5);
875template <
class P1,
class P2,
class P3,
class P4,
class P5,
876 class TCallee,
class TRT,
class CallType,
877 class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
878inline TFunctorV5<P1,P2,P3,P4,P5>
879Functor(
TFunctorV5<P1,P2,P3,P4,P5>*,
const TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5)
const)
881 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5)
const;
888template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
895 return Thunk(*
this, p1, p2, p3, p4, p5);
907template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class Funct>
914 return (Funct(ftor.Func))(p1, p2, p3, p4, p5);
918template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class TCallee,
class TMemFunc>
922 :
TFunctor5<R,P1,P2,P3,P4,P5>(
Thunk, &c, &mf, sizeof(TMemFunc)) {}
926 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
927 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
928 return (callee->*memFunc)(p1, p2, p3, p4, p5);
932template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
933 class TRT,
class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
934inline TFunctor5<R,P1,P2,P3,P4,P5>
935Functor(
TFunctor5<R,P1,P2,P3,P4,P5>*, TRT(*f)(TP1,TP2,TP3,TP4,TP5))
937 return TFunctionTranslator5<R, P1, P2, P3, P4, P5, TRT(*)(TP1,TP2,TP3,TP4,TP5)>(f);
940template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
941 class TCallee,
class TRT,
class CallType,
942 class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
943inline TFunctor5<R,P1,P2,P3,P4,P5>
944Functor(
TFunctor5<R,P1,P2,P3,P4,P5>*, TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5))
946 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5);
950template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
951 class TCallee,
class TRT,
class CallType,
952 class TP1,
class TP2,
class TP3,
class TP4,
class TP5>
953inline TFunctor5<R,P1,P2,P3,P4,P5>
954Functor(
TFunctor5<R,P1,P2,P3,P4,P5>*,
const TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5)
const)
956 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5)
const;
963template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
968 void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
const
970 Thunk(*
this, p1, p2, p3, p4, p5, p6);
982template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class Funct>
989 (Funct(ftor.Func))(p1, p2, p3, p4, p5, p6);
993template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class TCallee,
class TMemFunc>
1001 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
1002 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
1003 (callee->*memFunc)(p1, p2, p3, p4, p5, p6);
1007template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1008 class TRT,
class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1009inline TFunctorV6<P1,P2,P3,P4,P5,P6>
1010Functor(
TFunctorV6<P1,P2,P3,P4,P5,P6>*, TRT(*f)(TP1,TP2,TP3,TP4,TP5,TP6))
1012 return TFunctionTranslatorV6<P1, P2, P3, P4, P5, P6, TRT(*)(TP1,TP2,TP3,TP4,TP5,TP6)>(f);
1015template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1016 class TCallee,
class TRT,
class CallType,
1017 class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1018inline TFunctorV6<P1,P2,P3,P4,P5,P6>
1019Functor(
TFunctorV6<P1,P2,P3,P4,P5,P6>*, TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5,TP6))
1021 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5,TP6);
1025template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1026 class TCallee,
class TRT,
class CallType,
1027 class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1028inline TFunctorV6<P1,P2,P3,P4,P5,P6>
1029Functor(
TFunctorV6<P1,P2,P3,P4,P5,P6>*,
const TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5,TP6)
const)
1031 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5,TP6)
const;
1038template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1045 return Thunk(*
this, p1, p2, p3, p4, p5, p6);
1057template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class Funct>
1064 return (Funct(ftor.Func))(p1, p2, p3, p4, p5, p6);
1068template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class TCallee,
class TMemFunc>
1072 :
TFunctor6<R,P1,P2,P3,P4,P5,P6>(
Thunk, &c, &mf, sizeof(TMemFunc)) {}
1076 TCallee* callee =
reinterpret_cast<TCallee*
>(ftor.
Callee);
1077 TMemFunc& memFunc(*(TMemFunc*)(
void*)ftor.MemberFunc);
1078 return (callee->*memFunc)(p1, p2, p3, p4, p5, p6);
1082template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1083 class TRT,
class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1084inline TFunctor6<R,P1,P2,P3,P4,P5,P6>
1085Functor(
TFunctor6<R,P1,P2,P3,P4,P5,P6>*, TRT(*f)(TP1,TP2,TP3,TP4,TP5,TP6))
1087 return TFunctionTranslator6<R, P1, P2, P3, P4, P5, P6, TRT(*)(TP1,TP2,TP3,TP4,TP5,TP6)>(f);
1090template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1091 class TCallee,
class TRT,
class CallType,
1092 class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1093inline TFunctor6<R,P1,P2,P3,P4,P5,P6>
1094Functor(
TFunctor6<R,P1,P2,P3,P4,P5,P6>*, TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5,TP6))
1096 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5,TP6);
1100template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1101 class TCallee,
class TRT,
class CallType,
1102 class TP1,
class TP2,
class TP3,
class TP4,
class TP5,
class TP6>
1103inline TFunctor6<R,P1,P2,P3,P4,P5,P6>
1104Functor(
TFunctor6<R,P1,P2,P3,P4,P5,P6>*,
const TCallee& c, TRT(CallType::*
const& f)(TP1,TP2,TP3,TP4,TP5,TP6)
const)
1106 typedef TRT (CallType::*TMemFunc)(TP1,TP2,TP3,TP4,TP5,TP6)
const;
static R Thunk(const TFunctorBase &ftor)
TFunctionTranslator0(Funct f)
TFunctionTranslator1(Funct f)
static R Thunk(const TFunctorBase &ftor, P1 p1)
TFunctionTranslator2(Funct f)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2)
TFunctionTranslator3(Funct f)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4)
TFunctionTranslator4(Funct f)
TFunctionTranslator5(Funct f)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
TFunctionTranslator6(Funct f)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
static void Thunk(const TFunctorBase &ftor)
TFunctionTranslatorV0(Funct f)
TFunctionTranslatorV1(Funct f)
static void Thunk(const TFunctorBase &ftor, P1 p1)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2)
TFunctionTranslatorV2(Funct f)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3)
TFunctionTranslatorV3(Funct f)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4)
TFunctionTranslatorV4(Funct f)
TFunctionTranslatorV5(Funct f)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
TFunctionTranslatorV6(Funct f)
Functor with 0 parameters, return R.
R(*) TThunk(const TFunctorBase &)
TFunctor0(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 1 parameter, return R.
TGadgetWindow *(*) TThunk(const TFunctorBase &, TWindow *)
R operator()(P1 p1) const
TFunctor1(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 2 parameters, return R.
R(*) TThunk(const TFunctorBase &, P1, P2)
TFunctor2(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
R operator()(P1 p1, P2 p2) const
Functor with 3 parameters, return R.
R operator()(P1 p1, P2 p2, P3 p3) const
TFunctor3(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
TGadget *(*) TThunk(const TFunctorBase &, int, int, bool &)
Functor with 4 parameters, return R.
R operator()(P1 p1, P2 p2, P3 p3, P4 p4) const
R(*) TThunk(const TFunctorBase &, P1, P2, P3, P4)
TFunctor4(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 5 parameters, return R.
R operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) const
TFunctor5(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
R(*) TThunk(const TFunctorBase &, P1, P2, P3, P4, P5)
Functor with 6 parameters, return R.
R operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) const
TFunctor6(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
R(*) TThunk(const TFunctorBase &, P1, P2, P3, P4, P5, P6)
Base functor class holds all of the actual data.
void(TFunctorBase::*) TMemberFunc()
Functor with 0 parameters, void return.
void(*) TThunk(const TFunctorBase &)
TFunctorV0(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 1 parameter, void return.
TFunctorV1(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void(*) TThunk(const TFunctorBase &, P1)
void operator()(P1 p1) const
Functor with 2 parameters, void return.
TFunctorV2(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void(*) TThunk(const TFunctorBase &, P1, P2)
void operator()(P1 p1, P2 p2) const
Functor with 3 parameters, void return.
void(*) TThunk(const TFunctorBase &, P1, P2, P3)
void operator()(P1 p1, P2 p2, P3 p3) const
TFunctorV3(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 4 parameters, void return.
void(*) TThunk(const TFunctorBase &, P1, P2, P3, P4)
void operator()(P1 p1, P2 p2, P3 p3, P4 p4) const
TFunctorV4(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 5 parameters, void return.
void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) const
TFunctorV5(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void(*) TThunk(const TFunctorBase &, P1, P2, P3, P4, P5)
Functor with 6 parameters, void return.
void(*) TThunk(const TFunctorBase &, P1, P2, P3, P4, P5, P6)
TFunctorV6(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) const
static R Thunk(const TFunctorBase &ftor)
TMemberTranslator0(TCallee &c, const TMemFunc &mf)
static R Thunk(const TFunctorBase &ftor, P1 p1)
TMemberTranslator1(TCallee &c, const TMemFunc &mf)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2)
TMemberTranslator2(TCallee &c, const TMemFunc &mf)
TMemberTranslator3(TCallee &c, const TMemFunc &mf)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3)
TMemberTranslator4(TCallee &c, const TMemFunc &mf)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
TMemberTranslator5(TCallee &c, const TMemFunc &mf)
static R Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
TMemberTranslator6(TCallee &c, const TMemFunc &mf)
TMemberTranslatorV0(TCallee &c, const TMemFunc &mf)
static void Thunk(const TFunctorBase &ftor)
static void Thunk(const TFunctorBase &ftor, P1 p1)
TMemberTranslatorV1(TCallee &c, const TMemFunc &mf)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2)
TMemberTranslatorV2(TCallee &c, const TMemFunc &mf)
TMemberTranslatorV3(TCallee &c, const TMemFunc &mf)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3)
TMemberTranslatorV4(TCallee &c, const TMemFunc &mf)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
TMemberTranslatorV5(TCallee &c, const TMemFunc &mf)
TMemberTranslatorV6(TCallee &c, const TMemFunc &mf)
static void Thunk(const TFunctorBase &ftor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
Object Windows Library (OWLNext Core).
TFunctorV0 Functor(TFunctorV0 *, TRT(*f)())
#define OWL_DISABLE_WARNING_POP
#define OWL_DISABLE_WARNING_PUSH
#define OWL_DISABLE_WARNING_OLD_STYLE_CAST
char MemberFunc[sizeof(TMemberFunc)]
ASSUMES this is always enough space.