From 7066218e792927cb6494ce73e834b8ddb3d275e6 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 10 Jun 2016 09:54:07 +0200 Subject: [PATCH 1/4] cmake: Kill cmake::CacheManager and its getter This member variable is never initialized and has apparently moved to cmState. --- Source/cmake.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Source/cmake.h b/Source/cmake.h index 4958a05dc..23726a23f 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -209,9 +209,6 @@ public: return this->GeneratorToolset; } - ///! get the cmCachemManager used by this invocation of cmake - cmCacheManager* GetCacheManager() { return this->CacheManager; } - const std::vector& GetSourceExtensions() const { return this->SourceFileExtensions; @@ -421,7 +418,6 @@ protected: CreateExtraGeneratorFunctionType newFunction); cmGlobalGenerator* GlobalGenerator; - cmCacheManager* CacheManager; std::map DiagLevels; std::string GeneratorPlatform; std::string GeneratorToolset; From 120899c6980fcd81aa2a0d7b733ae15332a7a133 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 10 Jun 2016 09:34:14 +0200 Subject: [PATCH 2/4] cmPropertyList: Add a way to retrieve all properties --- Source/cmPropertyMap.cxx | 12 ++++++++++++ Source/cmPropertyMap.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 74e04dac3..de1281ebe 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -15,6 +15,7 @@ #include "cmSystemTools.h" #include "cmake.h" +#include #include cmProperty* cmPropertyMap::GetOrCreateProperty(const std::string& name) @@ -29,6 +30,17 @@ cmProperty* cmPropertyMap::GetOrCreateProperty(const std::string& name) return prop; } +std::vector cmPropertyMap::GetPropertyList() const +{ + std::vector keyList; + for (cmPropertyMap::const_iterator i = this->begin(), e = this->end(); + i != e; ++i) { + keyList.push_back(i->first); + } + std::sort(keyList.begin(), keyList.end()); + return keyList; +} + void cmPropertyMap::SetProperty(const std::string& name, const char* value) { if (!value) { diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 4e987501b..6dc7bfbbe 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -19,6 +19,8 @@ class cmPropertyMap : public std::map public: cmProperty* GetOrCreateProperty(const std::string& name); + std::vector GetPropertyList() const; + void SetProperty(const std::string& name, const char* value); void AppendProperty(const std::string& name, const char* value, From 6eee24634bc1791a64f8146c0f79c769eb9dfb83 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 10 Jun 2016 09:34:49 +0200 Subject: [PATCH 3/4] cmCacheEntry: Retrieve all properties of cache entries --- Source/cmCacheManager.cxx | 10 ++++++++++ Source/cmCacheManager.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 676e84a2a..233d9cae7 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -539,6 +539,11 @@ void cmCacheManager::CacheIterator::Next() } } +std::vector cmCacheManager::CacheIterator::GetPropertyList() const +{ + return this->GetEntry().GetPropertyList(); +} + void cmCacheManager::CacheIterator::SetValue(const char* value) { if (this->IsAtEnd()) { @@ -558,6 +563,11 @@ bool cmCacheManager::CacheIterator::GetValueAsBool() const return cmSystemTools::IsOn(this->GetEntry().Value.c_str()); } +std::vector cmCacheManager::CacheEntry::GetPropertyList() const +{ + return this->Properties.GetPropertyList(); +} + const char* cmCacheManager::CacheEntry::GetProperty( const std::string& prop) const { diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index e9b80cb6f..153e9575c 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -38,6 +38,7 @@ private: std::string Value; cmState::CacheEntryType Type; cmPropertyMap Properties; + std::vector GetPropertyList() const; const char* GetProperty(const std::string&) const; void SetProperty(const std::string& property, const char* value); void AppendProperty(const std::string& property, const char* value, @@ -60,6 +61,7 @@ public: bool IsAtEnd() const; void Next(); std::string GetName() const { return this->Position->first; } + std::vector GetPropertyList() const; const char* GetProperty(const std::string&) const; bool GetPropertyAsBool(const std::string&) const; bool PropertyExists(const std::string&) const; From 63c0e92c9395083a61fe31cd89bee7e3814f10e8 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 10 Jun 2016 10:10:07 +0200 Subject: [PATCH 4/4] cmState: Expose list of properties of values in the cache --- Source/cmState.cxx | 8 ++++++++ Source/cmState.h | 1 + 2 files changed, 9 insertions(+) diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 04f07cecf..d2cfaba71 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -246,6 +246,14 @@ void cmState::SetCacheEntryBoolProperty(std::string const& key, it.SetProperty(propertyName, value); } +std::vector cmState::GetCacheEntryPropertyList( + const std::string& key) +{ + cmCacheManager::CacheIterator it = + this->CacheManager->GetCacheIterator(key.c_str()); + return it.GetPropertyList(); +} + const char* cmState::GetCacheEntryProperty(std::string const& key, std::string const& propertyName) { diff --git a/Source/cmState.h b/Source/cmState.h index 18c45b83f..935faecda 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -247,6 +247,7 @@ public: std::string const& value); void SetCacheEntryBoolProperty(std::string const& key, std::string const& propertyName, bool value); + std::vector GetCacheEntryPropertyList(std::string const& key); const char* GetCacheEntryProperty(std::string const& key, std::string const& propertyName); bool GetCacheEntryPropertyAsBool(std::string const& key,