cmCacheManager: Add non-iterator-based API.
The iterator pattern is an unusual one for CMake, and it hinders refactoring all configuration-time data manipulation into a single class.
This commit is contained in:
parent
9ada4c0433
commit
e62243674e
|
@ -139,6 +139,81 @@ public:
|
||||||
///! Get a value from the cache given a key
|
///! Get a value from the cache given a key
|
||||||
const char* GetInitializedCacheValue(const std::string& key) const;
|
const char* GetInitializedCacheValue(const std::string& key) const;
|
||||||
|
|
||||||
|
const char* GetCacheEntryValue(const std::string& key)
|
||||||
|
{
|
||||||
|
cmCacheManager::CacheIterator it = this->GetCacheIterator(key.c_str());
|
||||||
|
if (it.IsAtEnd())
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return it.GetValue().c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* GetCacheEntryProperty(std::string const& key,
|
||||||
|
std::string const& propName)
|
||||||
|
{
|
||||||
|
return this->GetCacheIterator(key.c_str()).GetProperty(propName);
|
||||||
|
}
|
||||||
|
|
||||||
|
CacheEntryType GetCacheEntryType(std::string const& key)
|
||||||
|
{
|
||||||
|
return this->GetCacheIterator(key.c_str()).GetType();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetCacheEntryPropertyAsBool(std::string const& key,
|
||||||
|
std::string const& propName)
|
||||||
|
{
|
||||||
|
return this->GetCacheIterator(key.c_str()).GetPropertyAsBool(propName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetCacheEntryProperty(std::string const& key,
|
||||||
|
std::string const& propName,
|
||||||
|
std::string const& value)
|
||||||
|
{
|
||||||
|
this->GetCacheIterator(key.c_str()).SetProperty(propName, value.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetCacheEntryBoolProperty(std::string const& key,
|
||||||
|
std::string const& propName,
|
||||||
|
bool value)
|
||||||
|
{
|
||||||
|
this->GetCacheIterator(key.c_str()).SetProperty(propName, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetCacheEntryValue(std::string const& key,
|
||||||
|
std::string const& value)
|
||||||
|
{
|
||||||
|
this->GetCacheIterator(key.c_str()).SetValue(value.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoveCacheEntryProperty(std::string const& key,
|
||||||
|
std::string const& propName)
|
||||||
|
{
|
||||||
|
this->GetCacheIterator(key.c_str()).SetProperty(propName, (void*)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppendCacheEntryProperty(std::string const& key,
|
||||||
|
std::string const& propName,
|
||||||
|
std::string const& value,
|
||||||
|
bool asString = false)
|
||||||
|
{
|
||||||
|
this->GetCacheIterator(key.c_str()).AppendProperty(propName,
|
||||||
|
value.c_str(),
|
||||||
|
asString);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> GetCacheEntryKeys()
|
||||||
|
{
|
||||||
|
std::vector<std::string> definitions;
|
||||||
|
definitions.reserve(this->GetSize());
|
||||||
|
cmCacheManager::CacheIterator cit = this->GetCacheIterator();
|
||||||
|
for ( cit.Begin(); !cit.IsAtEnd(); cit.Next() )
|
||||||
|
{
|
||||||
|
definitions.push_back(cit.GetName());
|
||||||
|
}
|
||||||
|
return definitions;
|
||||||
|
}
|
||||||
|
|
||||||
/** Get the version of CMake that wrote the cache. */
|
/** Get the version of CMake that wrote the cache. */
|
||||||
unsigned int GetCacheMajorVersion() const
|
unsigned int GetCacheMajorVersion() const
|
||||||
{ return this->CacheMajorVersion; }
|
{ return this->CacheMajorVersion; }
|
||||||
|
|
Loading…
Reference in New Issue