summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2019-02-02 23:17:42 +0100
committerNao Pross <naopross@thearcway.org>2019-02-02 23:17:42 +0100
commitf373a821de82271690342ddaa0566d1f85bcab91 (patch)
tree6cefa7104995008165ba42a4f4e49e4d619f57ed
parentFinish signal, it compiles signal_test and works(!!) (diff)
downloadflatland-f373a821de82271690342ddaa0566d1f85bcab91.tar.gz
flatland-f373a821de82271690342ddaa0566d1f85bcab91.zip
Fix few pointer casts
-rw-r--r--engine/include/core/signal.hpp7
-rw-r--r--test/signal_test.cpp2
2 files changed, 4 insertions, 5 deletions
diff --git a/engine/include/core/signal.hpp b/engine/include/core/signal.hpp
index a820880..9e35d6c 100644
--- a/engine/include/core/signal.hpp
+++ b/engine/include/core/signal.hpp
@@ -104,11 +104,10 @@ namespace flat::core
// m_callback is called only if the signature matches
bool invoke(std::shared_ptr<const helper::signal> s) const override
{
- // TODO: shared dynamic pointer cast
- const signal<Args...> *p = dynamic_cast<const signal<Args...> *>(s.get());
+ auto p = std::dynamic_pointer_cast<const signal<Args...>>(s);
// if dynamic cast fails
- if (p == nullptr) {
+ if (!p) {
npdebug("invoked listener ", this, " with non-matching signal ", s);
return false;
}
@@ -148,7 +147,7 @@ namespace flat::core
// insert pointer
m_listeners.push_front(
// decay shared_ptr to weak_ptr
- // TODO: static weak
+ // btw, here a static_cast is correct
static_cast<std::weak_ptr<helper::listener>>(
// decay listener to helper::listener
std::static_pointer_cast<helper::listener>(lis_ptr)
diff --git a/test/signal_test.cpp b/test/signal_test.cpp
index 99e6747..b7816b8 100644
--- a/test/signal_test.cpp
+++ b/test/signal_test.cpp
@@ -21,7 +21,7 @@ private:
public:
test_emitter(channel& ch) : m_chan(ch) {}
- void send_str(std::string msg) {
+ void send_str(const std::string& msg) {
npdebug("emitting signal with msg=", msg);
m_chan.emit(signal(msg));
}