66#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_15_H
67#define LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_15_H
94 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
100 typedef Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> TSelf;
101 typedef SharedPtr< impl::Dispatcher15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> > TDispatcherPtr;
113 template <
typename FunctionType>
115 dispatcher_(new impl::Dispatcher15Function<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, FunctionType>(iFunction))
121 template <
typename ObjectPtr,
typename Method>
123 dispatcher_(new impl::Dispatcher15Method<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, ObjectPtr, Method>(iObject, iMethod))
130 dispatcher_(iOther.dispatcher_)
137 dispatcher_(std::move(iOther.dispatcher_))
157 dispatcher_ = std::move(iOther.dispatcher_);
163 void 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
167 dispatcher_->call(iP1, iP2, iP3, iP4, iP5, iP6, iP7, iP8, iP9, iP10, iP11, iP12, iP13, iP14, iP15);
185 return dispatcher_.isEmpty();
192 return dispatcher_.isEmpty();
197 explicit operator bool()
const
199 return !dispatcher_.isEmpty() ;
206 dispatcher_.swap(iOther.dispatcher_);
214 if (dispatcher_ == iOther.dispatcher_)
218 return dispatcher_ && dispatcher_->isEquivalent(iOther.dispatcher_.get());
221 const TDispatcherPtr& dispatcher()
const
228 TDispatcherPtr dispatcher_;
236template<
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>
237inline bool operator!=(
const Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iA,
const Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iB)
247template <
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
248Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(
void (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
250 return Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iFunction);
258template <
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
259const Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>&
makeCallback(
const Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>& iCallback)
269template <
typename ObjectPtr,
typename Object,
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
270Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(ObjectPtr iObject,
void (Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
272 return Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iObject, iMethod);
280template <
typename ObjectPtr,
typename Object,
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
281Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> makeCallback(ObjectPtr iObject,
void (Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15)
const)
283 return Callback15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(iObject, iMethod);
292#define LASS_PRIM_HAVE_PY_EXPORT_TRAITS_CALLBACK_15
293#ifdef LASS_GUARDIAN_OF_INCLUSION_UTIL_CALLBACK_PYTHON_H
TSelf & operator=(const TSelf &iOther)
assignment operator
Callback15()
Default constructor, construct empty callback.
bool operator==(const TSelf &iOther) const
return true if two callbacks call the same function/method, NEEDS RTTI!
Callback15(TSelf &&iOther) noexcept
move constructor
Callback15(ObjectPtr iObject, Method iMethod)
Construct object/method callback.
void swap(TSelf &iOther)
Swaps the dispatcher of this callback with the dispatcher of another.
void reset()
Reset to empty callback.
Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(ObjectPtr iObject, void(Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const)
make a Callback15 from a object and const method
Callback15(const TSelf &iOther)
copy constructor
TSelf & operator=(TSelf &&iOther) noexcept
move assignment operator
void 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.
bool operator!() const
return this->isEmpty()
Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(void(*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
make a Callback15 from a function
bool isEmpty() const
Returns true if no callback dispatcher is assigned to this object.
Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > makeCallback(ObjectPtr iObject, void(Object::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15))
make a Callback15 from a object and method
Callback15(FunctionType iFunction)
Construct function callback.
bool operator!=(const Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iA, const Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iB)
return true if two callbacks are different
const Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > & makeCallback(const Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > &iCallback)
make a Callback15 from a callback
general utility, debug facilities, ...
Library for Assembled Shared Sources.