74class DispatcherR12:
public TDispatcherAllocatorBase
79 virtual ~DispatcherR12() {}
81 R 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)
const
83 return doCall(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12);
85 bool isEquivalent(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>* iOther)
const
87 return doIsEquivalent(iOther);
92 virtual R 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)
const = 0;
93 virtual bool doIsEquivalent(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>* iOther)
const = 0;
95 DispatcherR12(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>& iOther);
96 DispatcherR12& operator=(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>& iOther);
112class DispatcherR12Function:
public DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>
116 typedef FunctionType TFunction;
117 typedef DispatcherR12Function<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, FunctionType, Enable> TSelf;
119 DispatcherR12Function(
typename CallTraits<TFunction>::TParam iFunction):
124 const TFunction& function()
const
131 R 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)
const override
135 LASS_THROW_EX(EmptyCallback,
"You've tried to call an empty CallbackR0. Can't return a value.");
137 return function_(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12);
140 bool doIsEquivalent(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>* other)
const override
142 if constexpr (impl::IsEqualityComparable<TFunction>::value)
144 return other &&
typeid( *other ) ==
typeid( TSelf )
145 &&
static_cast<const TSelf*
>(other)->function_ == function_;
174class DispatcherR12Function
176 R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12,
178 typename
meta::EnableIf<!HasOperatorNot<FunctionType>::value>::Type
180 :
public DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>
184 typedef FunctionType TFunction;
186 DispatcherR12Function(
typename CallTraits<TFunction>::TParam iFunction):
191 const TFunction& function()
const
198 R 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)
const override
200 return function_(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12);
203 bool doIsEquivalent(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>* )
const override
225class DispatcherR12Method:
public DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>
229 typedef DispatcherR12Method<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, ObjectPtr, Method> TSelf;
231 DispatcherR12Method(
typename CallTraits<ObjectPtr>::TParam iObject,
232 typename CallTraits<Method>::TParam iMethod):
240 R 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)
const override
242 if (!object_ || !method_)
244 LASS_THROW_EX(EmptyCallback,
"You've tried to call an empty CallbackR0. Can't return a value.");
246 return ((*object_).*method_)(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12);
249 bool doIsEquivalent(
const DispatcherR12<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>* iOther)
const override
251 const TSelf* other =
dynamic_cast<const TSelf*
>(iOther);
252 return other && object_ == other->object_ && method_ == other->method_;