File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #include " pass_register.hpp"
2+
3+ namespace deepx
4+ {
5+
6+ PassRegistry &PassRegistry::instance ()
7+ {
8+ static PassRegistry registry_ins;
9+ return registry_ins;
10+ }
11+
12+ void PassRegistry::register_pass (const std::string &name, pass_func func)
13+ {
14+ registry_[name] = func;
15+ }
16+ }
Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < string>
3+ #include < unordered_map>
4+ #include < functional>
5+
6+ /* *
7+ * 使用REGISTER_PASS 宏用于注册pass
8+ */
9+ namespace deepx
10+ {
11+ using pass_func = std::function<void ()>;
12+
13+ class PassRegistry
14+ {
15+ public:
16+ static PassRegistry& instance ();
17+
18+ void register_pass (const std::string &name, pass_func func);
19+
20+ PassRegistry (const PassRegistry&) = delete ;
21+ PassRegistry& operator =(const PassRegistry&) = delete ;
22+
23+ private:
24+ PassRegistry () = default ;
25+
26+ private:
27+ std::unordered_map<std::string, pass_func> registry_;
28+ };
29+ }
30+
31+
32+ #define REGISTER_PASS (name, func ) \
33+ struct Register ##name { \
34+ Register##name() { \
35+ PassRegistry::instance ().register_pass (#name, func); \
36+ } \
37+ }; \
38+ static Register##name register_##name;
You can’t perform that action at this time.
0 commit comments