From c5b7cfcd537786b7d54ff866bdeca4fec9f602c7 Mon Sep 17 00:00:00 2001 From: chatlanin Date: Thu, 6 Mar 2025 09:20:46 +0300 Subject: [PATCH] add name for test --- bin/layers/local_panel/local_panel.cpp | 2 +- bin/layers/opengl_panel/opengl_panel.cpp | 2 +- bin/layers/test_panel/test_panel.cpp | 2 +- bin/layers/test_panel_2/test_panel_2.cpp | 2 +- src/event/event.hpp | 47 +++++++++++++++++------- src/utils/define.hpp | 2 +- 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/bin/layers/local_panel/local_panel.cpp b/bin/layers/local_panel/local_panel.cpp index 78316b8..c68ea6f 100755 --- a/bin/layers/local_panel/local_panel.cpp +++ b/bin/layers/local_panel/local_panel.cpp @@ -5,7 +5,7 @@ namespace sandbox { void local_panel::on_attach() { - VE_CONNECT(local_panel); + VE_CONNECT("local_panel", local_panel); } void local_panel::render() diff --git a/bin/layers/opengl_panel/opengl_panel.cpp b/bin/layers/opengl_panel/opengl_panel.cpp index 361e21e..4385d9c 100755 --- a/bin/layers/opengl_panel/opengl_panel.cpp +++ b/bin/layers/opengl_panel/opengl_panel.cpp @@ -47,7 +47,7 @@ namespace sandbox void opengl_panel::on_attach() { - VE_CONNECT(opengl_panel); + VE_CONNECT("opengl_panel", opengl_panel); hack::log()("on_attach"); } diff --git a/bin/layers/test_panel/test_panel.cpp b/bin/layers/test_panel/test_panel.cpp index e7e894b..60600ac 100755 --- a/bin/layers/test_panel/test_panel.cpp +++ b/bin/layers/test_panel/test_panel.cpp @@ -5,7 +5,7 @@ namespace sandbox { void test_panel::on_attach() { - VE_CONNECT(test_panel); + VE_CONNECT("test_panel", test_panel); hack::log()("on_attach", VE::application::get()->get_glfw()->width()); } diff --git a/bin/layers/test_panel_2/test_panel_2.cpp b/bin/layers/test_panel_2/test_panel_2.cpp index 7a9a19d..b252882 100755 --- a/bin/layers/test_panel_2/test_panel_2.cpp +++ b/bin/layers/test_panel_2/test_panel_2.cpp @@ -5,7 +5,7 @@ namespace sandbox { void test_panel_2::on_attach() { - VE_CONNECT(test_panel_2); + VE_CONNECT("test_panel_2", test_panel_2); // ATTENTION: активировать сигнальную систему в детях-компонентах m_local_panel.on_attach(); diff --git a/src/event/event.hpp b/src/event/event.hpp index 9cc7f1c..095e0aa 100755 --- a/src/event/event.hpp +++ b/src/event/event.hpp @@ -39,31 +39,52 @@ namespace VE struct event_manager : public hack::patterns::singleton { std::vector> m_funcs; + std::vector m_name; template - void connect(T* obj, void (T::*method)(event)) + void connect(std::string name, T* obj, void (T::*method)(event)) { m_funcs.push_back(std::bind(method, obj, std::placeholders::_1)); + m_name.push_back(name); } void emit(event e) { - for(auto func : m_funcs) + int i = 0; + try { - try + for (; i < m_funcs.size(); ++i) { - func(e); - } - catch(std::exception& e) - { - hack::error()(e.what()); - hack::log()("size funcs", m_funcs.size()); - } - catch(...) - { - hack::error()("ooops..."); + m_funcs[i](e); } } + catch(std::exception& e) + { + hack::error()(e.what()); + hack::log()("size funcs", m_funcs.size()); + hack::log()("key", m_name[i]); + } + catch(...) + { + hack::error()("ooops..."); + } + + // for(auto& func : m_funcs) + // { + // try + // { + // func(e); + // } + // catch(std::exception& e) + // { + // hack::error()(e.what()); + // hack::log()("size funcs", m_funcs.size()); + // } + // catch(...) + // { + // hack::error()("ooops..."); + // } + // } } }; } diff --git a/src/utils/define.hpp b/src/utils/define.hpp index 5032d9e..a03a74e 100755 --- a/src/utils/define.hpp +++ b/src/utils/define.hpp @@ -12,7 +12,7 @@ // #define VE_CONNECT(DEF_NAME, DEF_CLASS) VE::event_manager::instance().connect(DEF_NAME, std::bind(&DEF_CLASS::on_event, this, std::placeholders::_1)); -#define VE_CONNECT(DEF_CLASS) VE::event_manager::instance().connect(this, &DEF_CLASS::on_event); +#define VE_CONNECT(DEF_NAME, DEF_CLASS) VE::event_manager::instance().connect(DEF_NAME, this, &DEF_CLASS::on_event); #define VE_EMIT(e) VE::event_manager::instance().emit(e)