diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2019-05-10 09:22:38 (GMT) |
---|---|---|
committer | Sebastian Holtermann <sebholt@xwmw.org> | 2019-05-10 18:22:26 (GMT) |
commit | 02293841e742c14a18155bc0e10c39462c97dcbf (patch) | |
tree | 770fb507ae356ce086ef5eb37df0ab88058165d9 | |
parent | a173a1173e06dad812afe17c9751cb7c2f94eda4 (diff) | |
download | CMake-02293841e742c14a18155bc0e10c39462c97dcbf.zip CMake-02293841e742c14a18155bc0e10c39462c97dcbf.tar.gz CMake-02293841e742c14a18155bc0e10c39462c97dcbf.tar.bz2 |
Ninja: Simplify cmGlobalNinjaGenerator::AddRule and HasRule methods
- Use `std::unordered_set` for the emitted rule register
- Use `std::unordered_map` for command length register
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 12 | ||||
-rw-r--r-- | Source/cmGlobalNinjaGenerator.h | 9 |
2 files changed, 8 insertions, 13 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 06234aa..684a679 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -706,22 +706,20 @@ void cmGlobalNinjaGenerator::AddRule( const std::string& restat, bool generator) { // Do not add the same rule twice. - if (this->HasRule(name)) { + if (!this->Rules.insert(name).second) { return; } - - this->Rules.insert(name); + // Store command length + this->RuleCmdLength[name] = static_cast<int>(command.size()); + // Write rule cmGlobalNinjaGenerator::WriteRule(*this->RulesFileStream, name, command, description, comment, depfile, deptype, rspfile, rspcontent, restat, generator); - - this->RuleCmdLength[name] = static_cast<int>(command.size()); } bool cmGlobalNinjaGenerator::HasRule(const std::string& name) { - RulesSetType::const_iterator rule = this->Rules.find(name); - return (rule != this->Rules.end()); + return (this->Rules.find(name) != this->Rules.end()); } // Private virtual overrides diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index efd1d8f..4cd1a98 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -10,6 +10,7 @@ #include <set> #include <string> #include <unordered_map> +#include <unordered_set> #include <utility> #include <vector> @@ -415,15 +416,11 @@ private: cmGeneratedFileStream* RulesFileStream; cmGeneratedFileStream* CompileCommandsStream; - /// The type used to store the set of rules added to the generated build - /// system. - typedef std::set<std::string> RulesSetType; - /// The set of rules added to the generated build system. - RulesSetType Rules; + std::unordered_set<std::string> Rules; /// Length of rule command, used by rsp file evaluation - std::map<std::string, int> RuleCmdLength; + std::unordered_map<std::string, int> RuleCmdLength; /// The set of dependencies to add to the "all" target. cmNinjaDeps AllDependencies; |