diff options
author | Nao Pross <naopross@thearcway.org> | 2019-02-02 23:17:42 +0100 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2019-02-02 23:17:42 +0100 |
commit | f373a821de82271690342ddaa0566d1f85bcab91 (patch) | |
tree | 6cefa7104995008165ba42a4f4e49e4d619f57ed | |
parent | Finish signal, it compiles signal_test and works(!!) (diff) | |
download | flatland-f373a821de82271690342ddaa0566d1f85bcab91.tar.gz flatland-f373a821de82271690342ddaa0566d1f85bcab91.zip |
Fix few pointer casts
-rw-r--r-- | engine/include/core/signal.hpp | 7 | ||||
-rw-r--r-- | test/signal_test.cpp | 2 |
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)); } |