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;}
79 char MemberFunc[
sizeof(TMemberFunc)];
103template <
class Funct>
114template <
class TCallee,
class TMemFunc>
135template <
class TCallee,
class TRT,
class TCallType>
143template <
class TCallee,
class TRT,
class TCallType>
172template <
class R,
class Funct>
183template <
class R,
class TCallee,
class TMemFunc>
197template <
class R,
class TRT>
204template <
class R,
class TCallee,
class TRT,
class TCallType>
212template <
class R,
class TCallee,
class TRT,
class TCallType>
242template <
class P1,
class Funct>
253template <
class P1,
class TCallee,
class TMemFunc>
267template <
class P1,
class TRT,
class TP1>
274template <
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
282template <
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
293template <
class R,
class P1>
300 return Thunk(*
this,
p1);
312template <
class R,
class P1,
class Funct>
323template <
class R,
class P1,
class TCallee,
class TMemFunc>
337template <
class R,
class P1,
class TRT,
class TP1>
344template <
class R,
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
352template <
class R,
class P1,
class TCallee,
class TRT,
class TCallType,
class TP1>
363template <
class P1,
class P2>
370 Thunk(*
this,
p1,
p2);
382template <
class P1,
class P2,
class Funct>
393template <
class P1,
class P2,
class TCallee,
class TMemFunc>
407template <
class P1,
class P2,
class TRT,
class TP1,
class TP2>
414template <
class P1,
class P2,
424template <
class P1,
class P2,
437template <
class R,
class P1,
class P2>
444 return Thunk(*
this,
p1,
p2);
458template <
class R,
class P1,
class P2,
class Funct>
469template <
class R,
class P1,
class P2,
class TCallee,
class TMemFunc>
483template <
class R,
class P1,
class P2,
class TRT,
class TP1,
class TP2>
490template <
class R,
class P1,
class P2,
500template <
class R,
class P1,
class P2,
513template <
class P1,
class P2,
class P3>
532template <
class P1,
class P2,
class P3,
class Funct>
543template <
class P1,
class P2,
class P3,
class TCallee,
class TMemFunc>
557template <
class P1,
class P2,
class P3,
565template <
class P1,
class P2,
class P3,
575template <
class P1,
class P2,
class P3,
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>
618template <
class R,
class P1,
class P2,
class P3,
class TCallee,
class TMemFunc>
632template <
class R,
class P1,
class P2,
class P3,
640template <
class R,
class P1,
class P2,
class P3,
650template <
class R,
class P1,
class P2,
class P3,
663template <
class P1,
class P2,
class P3,
class P4>
682template <
class P1,
class P2,
class P3,
class P4,
class Funct>
693template <
class P1,
class P2,
class P3,
class P4,
class TCallee,
class TMemFunc>
707template <
class P1,
class P2,
class P3,
class P4,
725template <
class P1,
class P2,
class P3,
class P4,
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>
768template <
class R,
class P1,
class P2,
class P3,
class P4,
class TCallee,
class TMemFunc>
782template <
class R,
class P1,
class P2,
class P3,
class P4,
790template <
class R,
class P1,
class P2,
class P3,
class P4,
800template <
class R,
class P1,
class P2,
class P3,
class P4,
813template <
class P1,
class P2,
class P3,
class P4,
class P5>
832template <
class P1,
class P2,
class P3,
class P4,
class P5,
class Funct>
843template <
class P1,
class P2,
class P3,
class P4,
class P5,
class TCallee,
class TMemFunc>
857template <
class P1,
class P2,
class P3,
class P4,
class P5,
865template <
class P1,
class P2,
class P3,
class P4,
class P5,
869Functor(
TFunctorV5<P1,P2,P3,P4,P5>*,
TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5))
875template <
class P1,
class P2,
class P3,
class P4,
class P5,
879Functor(
TFunctorV5<P1,P2,P3,P4,P5>*,
const TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5) const)
888template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
907template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class Funct>
918template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class TCallee,
class TMemFunc>
932template <
class R,
class P1,
class P2,
class P3,
class P4,
class 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,
944Functor(
TFunctor5<R,P1,P2,P3,P4,P5>*,
TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5))
950template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
954Functor(
TFunctor5<R,P1,P2,P3,P4,P5>*,
const TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5) const)
963template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
982template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class Funct>
993template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class TCallee,
class TMemFunc>
1007template <
class P1,
class P2,
class P3,
class P4,
class P5,
class 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,
1019Functor(
TFunctorV6<P1,P2,P3,P4,P5,P6>*,
TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5,
TP6))
1025template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1029Functor(
TFunctorV6<P1,P2,P3,P4,P5,P6>*,
const TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5,
TP6) const)
1038template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1057template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class Funct>
1068template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class TCallee,
class TMemFunc>
1082template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class 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,
1094Functor(
TFunctor6<R,P1,P2,P3,P4,P5,P6>*,
TCallee&
c,
TRT(
CallType::* const& f)(
TP1,
TP2,
TP3,
TP4,
TP5,
TP6))
1100template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1104Functor(
TFunctor6<R,P1,P2,P3,P4,P5,P6>*,
const TCallee&
c,
TRT(
CallType::* const& f)(
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.
R(* TThunk)(const TFunctorBase &, P1)
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(* TThunk)(const TFunctorBase &, P1, P2, P3)
R operator()(P1 p1, P2 p2, P3 p3) const
TFunctor3(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
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
R(* TThunk)(const TFunctorBase &, P1, P2, P3, P4, P5)
TFunctor5(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 6 parameters, return R.
R(* TThunk)(const TFunctorBase &, P1, P2, P3, P4, P5, P6)
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)
Base functor class holds all of the actual data.
Functor with 0 parameters, void return.
TFunctorV0(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void(* TThunk)(const TFunctorBase &)
Functor with 1 parameter, void return.
void(* TThunk)(const TFunctorBase &, P1)
TFunctorV1(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
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 operator()(P1 p1, P2 p2) const
void(* TThunk)(const TFunctorBase &, P1, P2)
Functor with 3 parameters, void return.
void operator()(P1 p1, P2 p2, P3 p3) const
void(* TThunk)(const TFunctorBase &, P1, P2, P3)
TFunctorV3(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
Functor with 4 parameters, void return.
void operator()(P1 p1, P2 p2, P3 p3, P4 p4) const
TFunctorV4(THUNKREF(TThunk) t, const void *c, const void *f, size_t sz)
void(* TThunk)(const TFunctorBase &, P1, P2, P3, P4)
Functor with 5 parameters, void return.
void(* TThunk)(const TFunctorBase &, P1, P2, P3, P4, P5)
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)
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