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