diff options
-rw-r--r-- | Source/cmDefinitions.cxx | 12 | ||||
-rw-r--r-- | Source/cmDefinitions.h | 2 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 5 |
3 files changed, 8 insertions, 11 deletions
diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index 4b0eed4..f2100eb 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -119,10 +119,10 @@ void cmDefinitions::ClosureImpl(std::set<std::string>& undefined, } //---------------------------------------------------------------------------- -std::set<std::string> cmDefinitions::ClosureKeys() const +std::vector<std::string> cmDefinitions::ClosureKeys() const { - std::set<std::string> defined; - std::set<std::string> undefined; + std::vector<std::string> defined; + std::set<std::string> bound; cmDefinitions const* up = this; @@ -133,11 +133,9 @@ std::set<std::string> cmDefinitions::ClosureKeys() const mi != up->Map.end(); ++mi) { // Use this key if it is not already set or unset. - if(defined.find(mi->first) == defined.end() && - undefined.find(mi->first) == undefined.end()) + if(bound.insert(mi->first).second && mi->second.Exists) { - std::set<std::string>& m = mi->second.Exists? defined : undefined; - m.insert(mi->first); + defined.push_back(mi->first); } } up = up->Up; diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h index 950970b..4664090 100644 --- a/Source/cmDefinitions.h +++ b/Source/cmDefinitions.h @@ -50,7 +50,7 @@ public: cmDefinitions Closure() const; /** Compute the set of all defined keys. */ - std::set<std::string> ClosureKeys() const; + std::vector<std::string> ClosureKeys() const; private: // String with existence boolean. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9209e49..e2a9f61 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -94,7 +94,7 @@ public: return this->VarStack.top().LocalKeys(); } - std::set<std::string> ClosureKeys() const + std::vector<std::string> ClosureKeys() const { return this->VarStack.top().ClosureKeys(); } @@ -2514,8 +2514,7 @@ std::vector<std::string> cmMakefile std::vector<std::string> res; if ( !cacheonly ) { - std::set<std::string> definitions = this->Internal->ClosureKeys(); - res.insert(res.end(), definitions.begin(), definitions.end()); + res = this->Internal->ClosureKeys(); } std::vector<std::string> cacheKeys = this->GetState()->GetCacheEntryKeys(); |