2 #ifndef _YI_SIGNAL_CALLABLE_CONNECTION_H_ 3 #define _YI_SIGNAL_CALLABLE_CONNECTION_H_ 6 #error "Do not include YiSignalCallableConnection.h directly. Include YiSignal.h instead." 16 template<
typename CallableType,
typename... SignalTypes>
30 static_assert(Arity <=
sizeof...(SignalTypes),
"Cannot connect a slot of a given arity to a signal with a lower arity.");
43 virtual void Emit(
const SignalTypes &... args)
override 45 const std::tuple<
const SignalTypes &...> wrappedArgs = std::forward_as_tuple(args...);
55 inline void EmitInternal(YiIndexSequence<S...> *,
const std::tuple<const SignalTypes &...> &args)
57 m_slot(std::get<S>(args)...);
YiIndexSequence< S... > type
Definition: YiTypeTraits.h:508
static CYISignalConnectionID CreateUnique()
YI_SLOT m_slot
Definition: YiSignalCallableConnection.h:51
const CYISignalConnectionID & GetConnectionID() const
An object used to identify a specific CYISignal connection.
Definition: YiSignalConnectionID.h:14
The templated abstract class for signal connections.
Definition: YiSignalBaseConnection.h:26
virtual void Emit(const SignalTypes &...args) override
Definition: YiSignalCallableConnection.h:43
virtual std::unique_ptr< CYISignalAbstractConnection > Clone(CYISignalHandler *pSignalHandler, YI_CONNECTION_TYPE eConnectionType) const override
Definition: YiSignalCallableConnection.h:38
CallableType YI_SLOT
Definition: YiSignalCallableConnection.h:23
A signal connection class for connection to generic CALLABLE objects, with optional lifetime tracking...
Definition: YiSignalCallableConnection.h:17
Definition: YiSignalHandler.h:174
YI_CONNECTION_TYPE
Definition: YiSignalAbstractConnection.h:18
CYISignalCallableConnection(const CYISignalHandler *pSignalHandler, const YI_SLOT &slot, YI_CONNECTION_TYPE connectionType, const CYISignalConnectionID &connectionID=CYISignalConnectionID::CreateUnique())
Definition: YiSignalCallableConnection.h:32
static const size_t Arity
Definition: YiSignalCallableConnection.h:28
Definition: YiTypeTraits.h:569