1 #ifndef SIPLASPLAS_SIGNALS_SINK_HPP 2 #define SIPLASPLAS_SIGNALS_SINK_HPP 4 #include <siplasplas/typeerasure/simpleany.hpp> 5 #include <siplasplas/signals/export.hpp> 52 template<
typename Caller,
typename Callee>
68 template<
typename Caller>
85 template<
typename... Args>
88 if(invokeWithoutCallee())
91 std::vector<cpp::SimpleAny32>{
92 std::forward<Args>(args)...
99 std::vector<cpp::SimpleAny32>{
100 _callee, std::forward<Args>(args)...
127 virtual bool pull() = 0;
130 virtual void invoke(std::vector<cpp::SimpleAny32>&& args) = 0;
131 virtual bool invokeWithoutCallee()
const = 0;
139 #endif // SIPLASPLAS_SIGNALS_SINK_HPP SignalEmitter * callee() const
Gives the callee of the connection.
Definition: sink.hpp:112
void operator()(Args &&...args)
Invokes the sink with the given arguments.
Definition: sink.hpp:86
Class that can send and receive signals from other emitters.
Definition: emitter.hpp:64
SignalSink(Caller &caller, Callee &callee)
Constructs a sink given the connection caller and the callee.
Definition: sink.hpp:53
Definition: canary_allocator.hpp:7
SignalEmitter * caller() const
Gives the caller of the connection.
Definition: sink.hpp:122
Implements a type-erased value container with minimal value semantics requirements.
Definition: simpleany.hpp:15
Interface to the signals sink API.
Definition: sink.hpp:39
decltype(auto) invoke(Callable &&callable, const ::cpp::SimpleAny< Storages > &...args)
Invokes a callable object with the given type-erased arguments.
Definition: invoke.hpp:214
SignalSink(Caller &caller)
Constructs a sink given the connection caller object.
Definition: sink.hpp:69