diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-13 20:21:16 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-13 20:21:16 -0800 |
commit | 514a7e8b88b727bfa0871b5df0ba362fa6b529fb (patch) | |
tree | 897aa646611880f180fc658fc144b4008ecfdb73 /src/pass.cpp | |
parent | 06f34506dd1a190e3886097a528a9cdea7c834e1 (diff) | |
download | binaryen-514a7e8b88b727bfa0871b5df0ba362fa6b529fb.tar.gz binaryen-514a7e8b88b727bfa0871b5df0ba362fa6b529fb.tar.bz2 binaryen-514a7e8b88b727bfa0871b5df0ba362fa6b529fb.zip |
add descriptions to passes
Diffstat (limited to 'src/pass.cpp')
-rw-r--r-- | src/pass.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/pass.cpp b/src/pass.cpp index 25e7a41e5..fe147891c 100644 --- a/src/pass.cpp +++ b/src/pass.cpp @@ -13,25 +13,29 @@ PassRegistry* PassRegistry::get() { return manager; } -void PassRegistry::registerPass(const char* name, Creator create) { - assert(passCreatorMap.find(name) == passCreatorMap.end()); - passCreatorMap[name] = create; +void PassRegistry::registerPass(const char* name, const char *description, Creator create) { + assert(passInfos.find(name) == passInfos.end()); + passInfos[name] = PassInfo(description, create); } Pass* PassRegistry::createPass(std::string name) { - Creator creator = passCreatorMap[name]; - if (!creator) return nullptr; - return creator(); + if (passInfos.find(name) == passInfos.end()) return nullptr; + return passInfos[name].create(); } std::vector<std::string> PassRegistry::getRegisteredNames() { std::vector<std::string> ret; - for (auto pair : passCreatorMap) { + for (auto pair : passInfos) { ret.push_back(pair.first); } return ret; } +std::string PassRegistry::getPassDescription(std::string name) { + assert(passInfos.find(name) != passInfos.end()); + return passInfos[name].description; +} + // PassRunner void PassRunner::add(std::string passName) { |