Merge topic 'expose-cache-properties'

63c0e92c cmState: Expose list of properties of values in the cache
6eee2463 cmCacheEntry: Retrieve all properties of cache entries
120899c6 cmPropertyList: Add a way to retrieve all properties
7066218e cmake: Kill cmake::CacheManager and its getter
This commit is contained in:
Brad King 2016-06-13 10:03:05 -04:00 committed by CMake Topic Stage
commit 473634eb1c
7 changed files with 35 additions and 4 deletions

View File

@ -540,6 +540,11 @@ void cmCacheManager::CacheIterator::Next()
}
}
std::vector<std::string> cmCacheManager::CacheIterator::GetPropertyList() const
{
return this->GetEntry().GetPropertyList();
}
void cmCacheManager::CacheIterator::SetValue(const char* value)
{
if (this->IsAtEnd()) {
@ -559,6 +564,11 @@ bool cmCacheManager::CacheIterator::GetValueAsBool() const
return cmSystemTools::IsOn(this->GetEntry().Value.c_str());
}
std::vector<std::string> cmCacheManager::CacheEntry::GetPropertyList() const
{
return this->Properties.GetPropertyList();
}
const char* cmCacheManager::CacheEntry::GetProperty(
const std::string& prop) const
{

View File

@ -38,6 +38,7 @@ private:
std::string Value;
cmState::CacheEntryType Type;
cmPropertyMap Properties;
std::vector<std::string> 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<std::string> GetPropertyList() const;
const char* GetProperty(const std::string&) const;
bool GetPropertyAsBool(const std::string&) const;
bool PropertyExists(const std::string&) const;

View File

@ -15,6 +15,7 @@
#include "cmSystemTools.h"
#include "cmake.h"
#include <algorithm>
#include <assert.h>
cmProperty* cmPropertyMap::GetOrCreateProperty(const std::string& name)
@ -29,6 +30,17 @@ cmProperty* cmPropertyMap::GetOrCreateProperty(const std::string& name)
return prop;
}
std::vector<std::string> cmPropertyMap::GetPropertyList() const
{
std::vector<std::string> 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) {

View File

@ -19,6 +19,8 @@ class cmPropertyMap : public std::map<std::string, cmProperty>
public:
cmProperty* GetOrCreateProperty(const std::string& name);
std::vector<std::string> GetPropertyList() const;
void SetProperty(const std::string& name, const char* value);
void AppendProperty(const std::string& name, const char* value,

View File

@ -246,6 +246,14 @@ void cmState::SetCacheEntryBoolProperty(std::string const& key,
it.SetProperty(propertyName, value);
}
std::vector<std::string> 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)
{

View File

@ -247,6 +247,7 @@ public:
std::string const& value);
void SetCacheEntryBoolProperty(std::string const& key,
std::string const& propertyName, bool value);
std::vector<std::string> GetCacheEntryPropertyList(std::string const& key);
const char* GetCacheEntryProperty(std::string const& key,
std::string const& propertyName);
bool GetCacheEntryPropertyAsBool(std::string const& key,

View File

@ -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<std::string>& GetSourceExtensions() const
{
return this->SourceFileExtensions;
@ -423,7 +420,6 @@ protected:
CreateExtraGeneratorFunctionType newFunction);
cmGlobalGenerator* GlobalGenerator;
cmCacheManager* CacheManager;
std::map<std::string, DiagLevel> DiagLevels;
std::string GeneratorPlatform;
std::string GeneratorToolset;