48#define FX_REDEFINE_EMIT
52#define FX_REDEFINE_SLOTS
67#include "XeThreadHelper.h"
74template <
class R,
class ... Args>
108 template <
class TReciver>
111 auto slot = [reciver, method,
this](Args&&... args)
113 TReciver* r =
dynamic_cast<TReciver*
>( reciver );
129 template <
class TReciver>
132 auto slot = [reciver, method,
this](Args&&... args) -> R
135 return (reciver->*method)( args... );
159 if ( m_pSender->signalsBlocked() )
162 XeThreadHelper::PostToThread(XE_THREAD_EVENT, [&, args ...]() {
slimsig::signal<R(Args...)>::emit(args...); });
164 slimsig::signal<R( Args... )>::emit( std::forward<Args&&>( args )... );
174#ifdef FX_REDEFINE_EMIT
177#ifdef FX_REDEFINE_SLOTS
CFxUIEmitScope(CFxUIObject *slot, CFxUIObject *pSender)
connection_type connect(TReciver *reciver, R(TReciver::*method)(Args... args))
connection_type connect(CFxUIObject *reciver, void(TReciver::*method)())
connection_type connect(std::function< void(Args...)> function)
CFxUISignal(CFxUIObject *sender)
typename base::Connection connection_type
slimsig::signal< R(Args...)> base