76class Dispatcher15:
public TDispatcherAllocatorBase
81 virtual ~Dispatcher15() {}
83 void call(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6,
typename util::CallTraits<P7>::TParam iP7,
typename util::CallTraits<P8>::TParam iP8,
typename util::CallTraits<P9>::TParam iP9,
typename util::CallTraits<P10>::TParam iP10,
typename util::CallTraits<P11>::TParam iP11,
typename util::CallTraits<P12>::TParam iP12,
typename util::CallTraits<P13>::TParam iP13,
typename util::CallTraits<P14>::TParam iP14,
typename util::CallTraits<P15>::TParam iP15)
const
85 doCall(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
87 bool isEquivalent(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>* iOther)
const
89 return doIsEquivalent(iOther);
94 virtual void doCall(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6,
typename util::CallTraits<P7>::TParam iP7,
typename util::CallTraits<P8>::TParam iP8,
typename util::CallTraits<P9>::TParam iP9,
typename util::CallTraits<P10>::TParam iP10,
typename util::CallTraits<P11>::TParam iP11,
typename util::CallTraits<P12>::TParam iP12,
typename util::CallTraits<P13>::TParam iP13,
typename util::CallTraits<P14>::TParam iP14,
typename util::CallTraits<P15>::TParam iP15)
const = 0;
95 virtual bool doIsEquivalent(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>* iOther)
const = 0;
97 Dispatcher15(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iOther);
98 Dispatcher15& operator=(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iOther);
114class Dispatcher15Function:
public Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>
118 typedef FunctionType TFunction;
119 typedef Dispatcher15Function<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, FunctionType, Enable> TSelf;
121 Dispatcher15Function(
typename CallTraits<TFunction>::TParam iFunction):
126 const TFunction& function()
const
133 void doCall(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6,
typename util::CallTraits<P7>::TParam iP7,
typename util::CallTraits<P8>::TParam iP8,
typename util::CallTraits<P9>::TParam iP9,
typename util::CallTraits<P10>::TParam iP10,
typename util::CallTraits<P11>::TParam iP11,
typename util::CallTraits<P12>::TParam iP12,
typename util::CallTraits<P13>::TParam iP13,
typename util::CallTraits<P14>::TParam iP14,
typename util::CallTraits<P15>::TParam iP15)
const override
139 function_(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
142 bool doIsEquivalent(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>* other)
const override
144 if constexpr (impl::IsEqualityComparable<TFunction>::value)
146 return other &&
typeid( *other ) ==
typeid( TSelf )
147 &&
static_cast<const TSelf*
>(other)->function_ == function_;
176class Dispatcher15Function
178 P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15,
180 typename
meta::EnableIf<!HasOperatorNot<FunctionType>::value>::Type
182 :
public Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>
186 Dispatcher15Function(
typename CallTraits<FunctionType>::TParam iFunction):
191 const TFunction& function()
const
198 void doCall(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6,
typename util::CallTraits<P7>::TParam iP7,
typename util::CallTraits<P8>::TParam iP8,
typename util::CallTraits<P9>::TParam iP9,
typename util::CallTraits<P10>::TParam iP10,
typename util::CallTraits<P11>::TParam iP11,
typename util::CallTraits<P12>::TParam iP12,
typename util::CallTraits<P13>::TParam iP13,
typename util::CallTraits<P14>::TParam iP14,
typename util::CallTraits<P15>::TParam iP15)
const override
200 function_(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
203 bool doIsEquivalent(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>* )
const override
208 FunctionType function_;
225class Dispatcher15Method:
public Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>
229 typedef Dispatcher15Method<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, ObjectPtr, Method> TSelf;
231 Dispatcher15Method(
typename CallTraits<ObjectPtr>::TParam iObject,
232 typename CallTraits<Method>::TParam iMethod):
240 void doCall(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6,
typename util::CallTraits<P7>::TParam iP7,
typename util::CallTraits<P8>::TParam iP8,
typename util::CallTraits<P9>::TParam iP9,
typename util::CallTraits<P10>::TParam iP10,
typename util::CallTraits<P11>::TParam iP11,
typename util::CallTraits<P12>::TParam iP12,
typename util::CallTraits<P13>::TParam iP13,
typename util::CallTraits<P14>::TParam iP14,
typename util::CallTraits<P15>::TParam iP15)
const override
242 if (!object_ || !method_)
246 ((*object_).*method_)(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
249 bool doIsEquivalent(
const Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>* iOther)
const override
251 const TSelf* other =
dynamic_cast<const TSelf*
>(iOther);
252 return other && object_ == other->object_ && method_ == other->method_;