sigh: internal changes
This commit is contained in:
@@ -440,9 +440,8 @@ public:
|
||||
* @param value_or_instance A valid object that fits the purpose.
|
||||
*/
|
||||
void disconnect(const void *value_or_instance) {
|
||||
if(value_or_instance) {
|
||||
disconnect_if([value_or_instance](const auto &elem) { return elem.data() == value_or_instance; });
|
||||
}
|
||||
ENTT_ASSERT(value_or_instance != nullptr, "Invalid value or instance");
|
||||
disconnect_if([value_or_instance](const auto &elem) { return elem.data() == value_or_instance; });
|
||||
}
|
||||
|
||||
/*! @brief Disconnects all the listeners from a signal. */
|
||||
|
||||
@@ -70,7 +70,8 @@ TEST(SigH, Lifetime) {
|
||||
ASSERT_NO_THROW(delete new signal{});
|
||||
}
|
||||
|
||||
TEST(SigH, Clear) {
|
||||
TEST(SigH, Disconnect) {
|
||||
sigh_listener listener;
|
||||
entt::sigh<void(int &)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
|
||||
@@ -79,7 +80,32 @@ TEST(SigH, Clear) {
|
||||
ASSERT_FALSE(sink.empty());
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
|
||||
sink.disconnect(static_cast<const void *>(nullptr));
|
||||
sink.disconnect<&sigh_listener::f>();
|
||||
|
||||
ASSERT_TRUE(sink.empty());
|
||||
ASSERT_TRUE(sigh.empty());
|
||||
|
||||
sink.connect<&sigh_listener::g>(listener);
|
||||
|
||||
ASSERT_FALSE(sink.empty());
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
|
||||
sink.disconnect<&sigh_listener::g>(listener);
|
||||
|
||||
ASSERT_TRUE(sink.empty());
|
||||
ASSERT_TRUE(sigh.empty());
|
||||
|
||||
sink.connect<&sigh_listener::g>(listener);
|
||||
|
||||
ASSERT_FALSE(sink.empty());
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
|
||||
sink.disconnect(&listener);
|
||||
|
||||
ASSERT_TRUE(sink.empty());
|
||||
ASSERT_TRUE(sigh.empty());
|
||||
|
||||
sink.connect<&sigh_listener::f>();
|
||||
|
||||
ASSERT_FALSE(sink.empty());
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
@@ -186,11 +212,6 @@ TEST(SigH, Members) {
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
ASSERT_EQ(sigh.size(), 2u);
|
||||
|
||||
sink.disconnect(static_cast<const void *>(nullptr));
|
||||
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
ASSERT_EQ(sigh.size(), 2u);
|
||||
|
||||
sink.disconnect(&l1);
|
||||
|
||||
ASSERT_FALSE(sigh.empty());
|
||||
|
||||
Reference in New Issue
Block a user