66#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_R_15_H
67#define LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_R_15_H
95 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15
101 typedef CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> TSelf;
102 typedef SharedPtr< impl::DispatcherR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> > TDispatcherPtr;
114 template <
typename FunctionType>
116 dispatcher_(new impl::DispatcherR15Function<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, FunctionType>(iFunction))
122 template <
typename ObjectPtr,
typename Method>
124 dispatcher_(new impl::DispatcherR15Method<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, ObjectPtr, Method>(iObject, iMethod))
131 dispatcher_(iOther.dispatcher_)
138 dispatcher_(std::move(iOther.dispatcher_))
158 dispatcher_ = std::move(iOther.dispatcher_);
164 R
operator()(
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
168 LASS_THROW_EX(EmptyCallback,
"You've tried to call an empty CallbackR15. Can't return a value.");
170 return dispatcher_->call(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
187 return dispatcher_.isEmpty();
194 return dispatcher_.isEmpty();
199 explicit operator bool()
const
201 return !dispatcher_.isEmpty();
208 dispatcher_.swap(iOther.dispatcher_);
216 if (dispatcher_ == iOther.dispatcher_)
220 return dispatcher_ && dispatcher_->isEquivalent(iOther.dispatcher_.get());
223 const TDispatcherPtr& dispatcher()
const
230 TDispatcherPtr dispatcher_;
238template<
typename R,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15>
239inline bool operator!=(
const CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iA,
const CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iB)
248template <
typename R,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15>
inline
249CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
251 return CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iFunction);
259template <
typename R,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15>
inline
260const CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>&
makeCallback(
const CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iCallback)
270template <
typename ObjectPtr,
typename Object,
typename R,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15>
inline
271CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(ObjectPtr iObject, R (Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
273 return CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iObject, iMethod);
281template <
typename ObjectPtr,
typename Object,
typename R,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12,
typename P13,
typename P14,
typename P15>
inline
282CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(ObjectPtr iObject, R (Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15)
const)
284 return CallbackR15<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iObject, iMethod);
293#define LASS_PRIM_HAVE_PY_EXPORT_TRAITS_CALLBACK_R15
294#ifdef LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_PYTHON_H
CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(ObjectPtr iObject, R(Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
make a CallbackR15 from a object and method
R operator()(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
THE operator.
void swap(TSelf &iOther)
Swaps the dispatcher of this callback with the dispatcher of another.
CallbackR15(TSelf &&iOther) noexcept
move constructor
CallbackR15(ObjectPtr iObject, Method iMethod)
Construct object/method callback.
CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(ObjectPtr iObject, R(Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const)
make a CallbackR15 from a object and const method
CallbackR15()
Default constructor, construct empty callback.
void reset()
Reset to empty callback.
bool operator!() const
return this->isEmpty()
bool operator!=(const CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iA, const CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iB)
return true if two callbacks are different
TSelf & operator=(TSelf &&iOther) noexcept
assignment operator
bool operator==(const TSelf &iOther) const
return true if two callbacks call the same function/method, NEEDS RTTI!
TSelf & operator=(const TSelf &iOther)
assignment operator
bool isEmpty() const
Returns true if no callback dispatcher is assigned to this object.
const CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > & makeCallback(const CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iCallback)
make a CallbackR15 from a function
CallbackR15(const TSelf &iOther)
copy constructor
CallbackR15< R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(R(*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
make a CallbackR15 from a function
CallbackR15(FunctionType iFunction)
Construct function callback.
general utility, debug facilities, ...
Library for Assembled Shared Sources.