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