diff options
author | ancarola <raffaele.ancarola@epfl.ch> | 2019-01-25 22:05:15 +0100 |
---|---|---|
committer | ancarola <raffaele.ancarola@epfl.ch> | 2019-01-25 22:05:15 +0100 |
commit | fe75db9167f4327d2bb2353f94d84047666bb440 (patch) | |
tree | a1f67e5fff1d1f0458ae1ae4fb6e9d4ebf57b58c /engine/include/core/signal.hpp | |
parent | Update to make configure.py to build deps, instead of build.ninja (diff) | |
download | flatland-fe75db9167f4327d2bb2353f94d84047666bb440.tar.gz flatland-fe75db9167f4327d2bb2353f94d84047666bb440.zip |
Core channel in flatland and signal test
Diffstat (limited to 'engine/include/core/signal.hpp')
-rw-r--r-- | engine/include/core/signal.hpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/engine/include/core/signal.hpp b/engine/include/core/signal.hpp index 8a3d639..7d91150 100644 --- a/engine/include/core/signal.hpp +++ b/engine/include/core/signal.hpp @@ -4,7 +4,6 @@ #include <list> #include <set> #include <initializer_list> -#include "object.hpp" #include "task.hpp" #include "types.hpp" #include <functional> @@ -14,6 +13,8 @@ namespace flat { + class object; + namespace core { @@ -70,8 +71,7 @@ namespace flat template<typename R, typename T> static ptr create( R T::*mf, T& obj, - const std::initializer_list<std::string>& filters = {}) - { + const std::initializer_list<std::string>& filters = {}) { return std::make_shared<listener>(std::bind(mf, obj), filters); } @@ -118,10 +118,17 @@ namespace flat bool connect(listener* l); void disconnect(listener* l); + + listener::ptr connect(listener::callback f, const std::initializer_list<std::string>& filters = {}); + + template<typename R, typename T> + inline listener::ptr connect(R T::*mf, T& obj, const std::initializer_list<std::string>& filters = {}) { + return connect(std::bind(mf, obj)); + } static ptr find(const std::string&); - static ptr create(const std::string& id, priority_t prior); + static ptr create(const std::string& id, priority_t prior = priority_t::none); void check_and_call(); }; |