summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-04-12 18:08:42 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-04-12 18:08:42 (GMT)
commit55ecd818f6bf70590d61584a87aae7bba992e26d (patch)
tree5d1833b97f82639d2661753ba7e5e12dd19f5e76
parent18b58b618ccfb3b3fc56935b64a8fa2139b8398a (diff)
downloadCMake-55ecd818f6bf70590d61584a87aae7bba992e26d.zip
CMake-55ecd818f6bf70590d61584a87aae7bba992e26d.tar.gz
CMake-55ecd818f6bf70590d61584a87aae7bba992e26d.tar.bz2
cmGlobalGenerator: Store languages as vector, not map.
The second component of the map is never used.
-rw-r--r--Source/cmGlobalGenerator.cxx17
-rw-r--r--Source/cmGlobalGenerator.h2
2 files changed, 11 insertions, 8 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 35394b8..6a6a503 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -968,7 +968,13 @@ void cmGlobalGenerator::SetLanguageEnabled(const std::string& l,
void cmGlobalGenerator::SetLanguageEnabledFlag(const std::string& l,
cmMakefile* mf)
{
- this->LanguageEnabled[l] = true;
+ std::vector<std::string>::iterator it =
+ std::lower_bound(this->LanguageEnabled.begin(),
+ this->LanguageEnabled.end(), l);
+ if (it == this->LanguageEnabled.end() || *it != l)
+ {
+ this->LanguageEnabled.insert(it, l);
+ }
// Fill the language-to-extension map with the current variable
// settings to make sure it is available for the try_compile()
@@ -1079,7 +1085,8 @@ bool cmGlobalGenerator::IgnoreFile(const char* ext) const
bool cmGlobalGenerator::GetLanguageEnabled(const std::string& l) const
{
- return (this->LanguageEnabled.find(l)!= this->LanguageEnabled.end());
+ return std::binary_search(this->LanguageEnabled.begin(),
+ this->LanguageEnabled.end(), l);
}
void cmGlobalGenerator::ClearEnabledLanguages()
@@ -1958,11 +1965,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
void
cmGlobalGenerator::GetEnabledLanguages(std::vector<std::string>& lang) const
{
- for(std::map<std::string, bool>::const_iterator i =
- this->LanguageEnabled.begin(); i != this->LanguageEnabled.end(); ++i)
- {
- lang.push_back(i->first);
- }
+ lang = this->LanguageEnabled;
}
int cmGlobalGenerator::GetLinkerPreference(const std::string& lang) const
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index 5b9ddee..ce3f037 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -441,7 +441,7 @@ private:
// If you add a new map here, make sure it is copied
// in EnableLanguagesFromGenerator
std::map<std::string, bool> IgnoreExtensions;
- std::map<std::string, bool> LanguageEnabled;
+ std::vector<std::string> LanguageEnabled;
std::set<std::string> LanguagesReady; // Ready for try_compile
std::map<std::string, std::string> OutputExtensions;
std::map<std::string, std::string> LanguageToOutputExtension;