32 #include <Pt/Callable.h>
34 #include <Pt/Connectable.h>
35 #include <Pt/TypeTraits.h>
48 template <
typename L,
typename R,
typename... A>
56 : _lambda(std::forward<T>(lambda))
62 return _lambda(std::forward<A>(args)...);
83 template <
typename L,
typename R,
typename... A>
94 : _lambda(std::forward<T>(lambda))
113 if(_context && connection.
sender() != _context)
115 _context->onConnectionOpen(connection);
122 if(_context && connection.
sender() != _context)
124 _context->onConnectionClose(connection);
141 template <
typename L,
143 typename M = decltype( &C::operator() )>
144 struct LambdaSlotTraits;
148 template <
typename L,
class C,
typename R,
typename... As>
149 struct LambdaSlotTraits<L, C, R (C::*)(As...)>
151 typedef LambdaSlot<C, R, As...> Slot;
156 template <
typename L,
class C,
typename R,
typename... As>
157 struct LambdaSlotTraits<L, C, R (C::*)(As...) const>
159 typedef LambdaSlot<C, R, As...> Slot;
167 template <
typename L,
168 typename SlotT =
typename LambdaSlotTraits<L>::Slot>
171 return SlotT( std::forward<L>(lambda) );
179 template <
typename L,
180 typename SlotT =
typename LambdaSlotTraits<L>::Slot>
183 return SlotT( std::forward<L>(lambda), &context );
191 template <
typename R,
typename... A,
typename T,
195 return LambdaSlot<L, R, A...>( std::forward<T>(lambda) );
203 template <
typename R,
typename... A,
typename T,
208 return LambdaSlot<L, R, A...>( std::forward<T>(lambda), &context );
213 #endif // PT_LAMBDA_H
const Connectable * sender() const
Returns the sender.
Definition: Connection.h:110
Core module.
Definition: Allocator.h:33
An interface for all callable entities.
Definition: Api-Callable.h:17
virtual const void * callable() const
Returns a pointer to the contained callable.
Definition: Lambda.h:99
SlotT slot(Connectable &context, L &&lambda)
Returns a deduced slot object for the given lambda.
Definition: Lambda.h:181
Adapts a lambda or function object as a callable.
Definition: Lambda.h:50
LambdaSlot< L, R, A... > slot(T &&lambda)
Returns a slot object for the given lambda.
Definition: Lambda.h:193
Base type for various "slot" types.
Definition: Api-Slot.h:51
IMPLEMENTATION_DEFINED Value
The derived value type.
Definition: Api-TypeTraits.h:22
Slot * clone() const
Clone this object with new.
Definition: Lambda.h:105
virtual void onDisconnect(const Connection &connection)
Notifies of disconnects.
Definition: Lambda.h:120
Connection Management for Signal and Slot Objects.
Definition: Connectable.h:50
Lambda(T &&lambda)
Constructs from a lambda or function object.
Definition: Lambda.h:55
Adapts a Lambda for use as a slot.
Definition: Lambda.h:85
SlotT slot(L &&lambda)
Returns a deduced slot object for the given lambda.
Definition: Lambda.h:169
LambdaSlot< L, R, A... > slot(Connectable &context, T &&lambda)
Returns a slot object for the given lambda.
Definition: Lambda.h:205
R operator()(A... args) const
Call the callable entity.
Definition: Lambda.h:60
virtual void onConnect(const Connection &connection)
Notifies of connects.
Definition: Lambda.h:111
Endpoint of a signal/slot connection.
Definition: Api-Slot.h:23
LambdaSlot(T &&lambda, Connectable *context=0)
Constructs from a lambda and optional lifetime context.
Definition: Lambda.h:93
virtual bool equals(const Slot &) const
Returns true if two slots are equal in value.
Definition: Lambda.h:129
Represents a connection between a Signal/Delegate and a slot.
Definition: Connection.h:91