32#include <Pt/Callable.h>
34#include <Pt/Connectable.h>
35#include <Pt/TypeTraits.h>
48template <
typename L,
typename R,
typename... A>
56 : _lambda(std::forward<T>(lambda))
60 R call(A... args)
const
62 return _lambda(std::forward<A>(args)...);
66 void invoke(A... args)
const
68 _lambda(std::forward<A>(args)...);
89template <
typename L,
typename R,
typename... A>
93 typedef Lambda<L, R, A...> LambdaT;
100 : _lambda(std::forward<T>(lambda))
119 if(_context && connection.
sender() != _context)
121 _context->onConnectionOpen(connection);
128 if(_context && connection.
sender() != _context)
130 _context->onConnectionClose(connection);
149 typename M =
decltype( &C::operator() )>
150struct LambdaSlotTraits;
154template <
typename L,
class C,
typename R,
typename... As>
155struct LambdaSlotTraits<L, C, R (C::*)(As...)>
157 typedef LambdaSlot<C, R, As...> Slot;
162template <
typename L,
class C,
typename R,
typename... As>
163struct LambdaSlotTraits<L, C, R (C::*)(As...) const>
165 typedef LambdaSlot<C, R, As...> Slot;
174 typename SlotT =
typename LambdaSlotTraits<L>::Slot>
177 return SlotT( std::forward<L>(lambda) );
186 typename SlotT =
typename LambdaSlotTraits<L>::Slot>
189 return SlotT( std::forward<L>(lambda), &context );
197template <
typename R,
typename... A,
typename T,
201 return LambdaSlot<L, R, A...>( std::forward<T>(lambda) );
209template <
typename R,
typename... A,
typename T,
214 return LambdaSlot<L, R, A...>( std::forward<T>(lambda), &context );
Base type for various "slot" types.
Definition Slot.h:92
An interface for all callable entities.
Definition Callable.h:48
Connection Management for Signal and Slot Objects.
Definition Connectable.h:50
Represents a connection between a Signal/Delegate and a slot.
Definition Connection.h:96
const Connectable * sender() const
Returns the sender.
Definition Connection.h:115
Adapts a Lambda for use as a slot.
Definition Lambda.h:91
virtual bool equals(const Slot &) const
Returns true if two slots are equal in value.
Definition Lambda.h:135
virtual const Callback * callable() const
Returns the callable converted to the type-erased Callback interface.
Definition Lambda.h:105
virtual void onDisconnect(const Connection &connection)
Notifies of disconnects.
Definition Lambda.h:126
virtual void onConnect(const Connection &connection)
Notifies of connects.
Definition Lambda.h:117
Slot * clone() const
Clone this object with new.
Definition Lambda.h:111
LambdaSlot(T &&lambda, Connectable *context=0)
Constructs from a lambda and optional lifetime context.
Definition Lambda.h:99
Adapts a lambda or function object as a callable.
Definition Lambda.h:50
Lambda(T &&lambda)
Constructs from a lambda or function object.
Definition Lambda.h:55
Lambda * clone() const
Returns a copy of this instance.
Definition Lambda.h:72
Endpoint of a signal/slot connection.
Definition Slot.h:55
SlotT slot(L &&lambda)
Returns a deduced slot object for the given lambda.
Definition Lambda.h:175
LambdaSlot< L, R, A... > slot(T &&lambda)
Returns a slot object for the given lambda.
Definition Lambda.h:199
LambdaSlot< L, R, A... > slot(Connectable &context, T &&lambda)
Returns a slot object for the given lambda.
Definition Lambda.h:211
SlotT slot(Connectable &context, L &&lambda)
Returns a deduced slot object for the given lambda.
Definition Lambda.h:187
Core module.
Definition Allocator.h:33
IMPLEMENTATION_DEFINED Value
The derived value type.
Definition Api-TypeTraits.h:40