From b6474fb875dbd0180fbddfc0b7ae80234ced87da Mon Sep 17 00:00:00 2001 From: julian <1229775764@qq.com> Date: Tue, 1 Apr 2025 21:29:40 +0800 Subject: [PATCH] scheduler: pass registry --- scheduler/common/pass_register.cpp | 16 +++++++++++++ scheduler/common/pass_register.hpp | 38 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 scheduler/common/pass_register.cpp create mode 100644 scheduler/common/pass_register.hpp diff --git a/scheduler/common/pass_register.cpp b/scheduler/common/pass_register.cpp new file mode 100644 index 00000000..a33dc85c --- /dev/null +++ b/scheduler/common/pass_register.cpp @@ -0,0 +1,16 @@ +#include "pass_register.hpp" + +namespace deepx +{ + + PassRegistry &PassRegistry::instance() + { + static PassRegistry registry_ins; + return registry_ins; + } + + void PassRegistry::register_pass(const std::string &name, pass_func func) + { + registry_[name] = func; + } +} \ No newline at end of file diff --git a/scheduler/common/pass_register.hpp b/scheduler/common/pass_register.hpp new file mode 100644 index 00000000..f900414d --- /dev/null +++ b/scheduler/common/pass_register.hpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include + +/** + * 使用REGISTER_PASS 宏用于注册pass + */ +namespace deepx +{ + using pass_func = std::function; + + class PassRegistry + { + public: + static PassRegistry& instance(); + + void register_pass(const std::string &name, pass_func func); + + PassRegistry(const PassRegistry&) = delete; + PassRegistry& operator=(const PassRegistry&) = delete; + + private: + PassRegistry() = default; + + private: + std::unordered_map registry_; + }; +} + + +#define REGISTER_PASS(name, func) \ + struct Register##name { \ + Register##name() { \ + PassRegistry::instance().register_pass(#name, func); \ + } \ + }; \ + static Register##name register_##name; \ No newline at end of file