dispatcher: refine ::trigger API - close #1307

This commit is contained in:
skypjack
2026-03-17 15:27:10 +01:00
parent ef088a298f
commit 793ea69195
5 changed files with 14 additions and 14 deletions

View File

@@ -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

View File

@@ -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);
}
/**

View File

@@ -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);

View File

@@ -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:

View File

@@ -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});
}