dispatcher: refine ::trigger API - close #1307
This commit is contained in:
@@ -445,7 +445,7 @@ to all the listeners registered so far:
|
||||
|
||||
```cpp
|
||||
dispatcher.trigger(an_event{42});
|
||||
dispatcher.trigger<another_event>();
|
||||
dispatcher.trigger(another_event{});
|
||||
```
|
||||
|
||||
Listeners are invoked immediately, order of execution is not guaranteed. This
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
return typename signal_type::sink_type{signal};
|
||||
}
|
||||
|
||||
void trigger(Type event) {
|
||||
void trigger(Type &event) {
|
||||
signal.publish(event);
|
||||
}
|
||||
|
||||
@@ -266,8 +266,8 @@ public:
|
||||
* @param value An instance of the given type of event.
|
||||
*/
|
||||
template<typename Type>
|
||||
void trigger(Type &&value = {}) {
|
||||
trigger(type_hash<std::decay_t<Type>>::value(), std::forward<Type>(value));
|
||||
void trigger(Type value) {
|
||||
trigger(type_hash<std::decay_t<Type>>::value(), value);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -277,8 +277,8 @@ public:
|
||||
* @param id Name used to map the event queue within the dispatcher.
|
||||
*/
|
||||
template<typename Type>
|
||||
void trigger(const id_type id, Type &&value = {}) {
|
||||
assure<std::decay_t<Type>>(id).trigger(std::forward<Type>(value));
|
||||
void trigger(const id_type id, Type value) {
|
||||
assure<std::decay_t<Type>>(id).trigger(value);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -48,7 +48,7 @@ TEST(Dispatcher, Functionalities) {
|
||||
dispatcher.update<non_aggregate>();
|
||||
|
||||
dispatcher.sink<test::empty>().connect<&receiver::receive>(receiver);
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
dispatcher.enqueue<test::empty>();
|
||||
|
||||
ASSERT_EQ(dispatcher.size<non_aggregate>(), 0u);
|
||||
@@ -65,7 +65,7 @@ TEST(Dispatcher, Functionalities) {
|
||||
ASSERT_EQ(receiver.cnt, 1);
|
||||
|
||||
dispatcher.update<test::empty>();
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
|
||||
ASSERT_EQ(dispatcher.size<test::empty>(), 0u);
|
||||
ASSERT_EQ(dispatcher.size(), 0u);
|
||||
@@ -88,7 +88,7 @@ TEST(Dispatcher, Functionalities) {
|
||||
test::empty event{};
|
||||
|
||||
dispatcher.sink<test::empty>().disconnect<&receiver::receive>(receiver);
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
dispatcher.enqueue(event);
|
||||
dispatcher.update();
|
||||
dispatcher.trigger(std::as_const(event));
|
||||
@@ -145,12 +145,12 @@ TEST(Dispatcher, OpaqueDisconnect) {
|
||||
receiver receiver{};
|
||||
|
||||
dispatcher.sink<test::empty>().connect<&receiver::receive>(receiver);
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
|
||||
ASSERT_EQ(receiver.cnt, 1);
|
||||
|
||||
dispatcher.disconnect(receiver);
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
|
||||
ASSERT_EQ(receiver.cnt, 1);
|
||||
}
|
||||
@@ -162,7 +162,7 @@ TEST(Dispatcher, NamedQueue) {
|
||||
receiver receiver{};
|
||||
|
||||
dispatcher.sink<test::empty>("named"_hs).connect<&receiver::receive>(receiver);
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
|
||||
ASSERT_EQ(receiver.cnt, 0);
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
|
||||
switch(operation) {
|
||||
case CR_STEP:
|
||||
static_cast<entt::dispatcher *>(ctx->userdata)->trigger<test::empty>();
|
||||
static_cast<entt::dispatcher *>(ctx->userdata)->trigger(test::empty{});
|
||||
static_cast<entt::dispatcher *>(ctx->userdata)->trigger(test::boxed_int{4});
|
||||
break;
|
||||
case CR_CLOSE:
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
#include "lib.h"
|
||||
|
||||
ENTT_API void trigger(entt::dispatcher &dispatcher) {
|
||||
dispatcher.trigger<test::empty>();
|
||||
dispatcher.trigger(test::empty{});
|
||||
dispatcher.trigger(test::boxed_int{2});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user