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
|
||||
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. */
|
||||
unsigned int GetCacheMajorVersion() const
|
||||
{ return this->CacheMajorVersion; }
|
||||
|
|
Loading…
Reference in New Issue