|
|
@@ -0,0 +1,147 @@
|
|
|
+/*============================================================================
|
|
|
+ CMake - Cross Platform Makefile Generator
|
|
|
+ Copyright 2015 Stephen Kelly <[email protected]>
|
|
|
+
|
|
|
+ Distributed under the OSI-approved BSD License (the "License");
|
|
|
+ see accompanying file Copyright.txt for details.
|
|
|
+
|
|
|
+ This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
|
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
+ See the License for more information.
|
|
|
+============================================================================*/
|
|
|
+#include "cmState.h"
|
|
|
+
|
|
|
+#include "cmake.h"
|
|
|
+
|
|
|
+cmState::cmState(cmake* cm)
|
|
|
+ : CMakeInstance(cm)
|
|
|
+{
|
|
|
+}
|
|
|
+cmCacheManager::CacheEntryType
|
|
|
+cmState::StringToCacheEntryType(const char* s)
|
|
|
+{
|
|
|
+ return cmCacheManager::StringToType(s);
|
|
|
+}
|
|
|
+
|
|
|
+const char*
|
|
|
+cmState::CacheEntryTypeToString(cmCacheManager::CacheEntryType t)
|
|
|
+{
|
|
|
+ return cmCacheManager::TypeToString(t);
|
|
|
+}
|
|
|
+
|
|
|
+bool cmState::IsCacheEntryType(std::string const& key)
|
|
|
+{
|
|
|
+ return cmCacheManager::IsType(key.c_str());
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<std::string> cmState::GetCacheEntryKeys() const
|
|
|
+{
|
|
|
+ std::vector<std::string> definitions;
|
|
|
+ definitions.reserve(this->CMakeInstance->GetCacheManager()->GetSize());
|
|
|
+ cmCacheManager::CacheIterator cit =
|
|
|
+ this->CMakeInstance->GetCacheManager()->GetCacheIterator();
|
|
|
+ for ( cit.Begin(); !cit.IsAtEnd(); cit.Next() )
|
|
|
+ {
|
|
|
+ definitions.push_back(cit.GetName());
|
|
|
+ }
|
|
|
+ return definitions;
|
|
|
+}
|
|
|
+
|
|
|
+const char* cmState::GetCacheEntryValue(std::string const& key) const
|
|
|
+{
|
|
|
+ cmCacheManager::CacheEntry* e = this->CMakeInstance->GetCacheManager()
|
|
|
+ ->GetCacheEntry(key);
|
|
|
+ if (!e)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return e->Value.c_str();
|
|
|
+}
|
|
|
+
|
|
|
+const char*
|
|
|
+cmState::GetInitializedCacheValue(std::string const& key) const
|
|
|
+{
|
|
|
+ return this->CMakeInstance->GetCacheManager()->GetInitializedCacheValue(key);
|
|
|
+}
|
|
|
+
|
|
|
+cmCacheManager::CacheEntryType
|
|
|
+cmState::GetCacheEntryType(std::string const& key) const
|
|
|
+{
|
|
|
+ cmCacheManager::CacheIterator it =
|
|
|
+ this->CMakeInstance->GetCacheManager()->GetCacheIterator(key.c_str());
|
|
|
+ return it.GetType();
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::SetCacheEntryValue(std::string const& key,
|
|
|
+ std::string const& value)
|
|
|
+{
|
|
|
+ this->CMakeInstance->GetCacheManager()->SetCacheEntryValue(key, value);
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::SetCacheEntryProperty(std::string const& key,
|
|
|
+ std::string const& propertyName,
|
|
|
+ std::string const& value)
|
|
|
+{
|
|
|
+ cmCacheManager::CacheIterator it =
|
|
|
+ this->CMakeInstance->GetCacheManager()->GetCacheIterator(key.c_str());
|
|
|
+ it.SetProperty(propertyName, value.c_str());
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::SetCacheEntryBoolProperty(std::string const& key,
|
|
|
+ std::string const& propertyName,
|
|
|
+ bool value)
|
|
|
+{
|
|
|
+ cmCacheManager::CacheIterator it =
|
|
|
+ this->CMakeInstance->GetCacheManager()->GetCacheIterator(key.c_str());
|
|
|
+ it.SetProperty(propertyName, value);
|
|
|
+}
|
|
|
+
|
|
|
+const char* cmState::GetCacheEntryProperty(std::string const& key,
|
|
|
+ std::string const& propertyName)
|
|
|
+{
|
|
|
+ cmCacheManager::CacheIterator it = this->CMakeInstance->GetCacheManager()
|
|
|
+ ->GetCacheIterator(key.c_str());
|
|
|
+ if (!it.PropertyExists(propertyName))
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return it.GetProperty(propertyName);
|
|
|
+}
|
|
|
+
|
|
|
+bool cmState::GetCacheEntryPropertyAsBool(std::string const& key,
|
|
|
+ std::string const& propertyName)
|
|
|
+{
|
|
|
+ return this->CMakeInstance->GetCacheManager()
|
|
|
+ ->GetCacheIterator(key.c_str()).GetPropertyAsBool(propertyName);
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::AddCacheEntry(const std::string& key, const char* value,
|
|
|
+ const char* helpString,
|
|
|
+ cmCacheManager::CacheEntryType type)
|
|
|
+{
|
|
|
+ this->CMakeInstance->GetCacheManager()->AddCacheEntry(key, value,
|
|
|
+ helpString, type);
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::RemoveCacheEntry(std::string const& key)
|
|
|
+{
|
|
|
+ this->CMakeInstance->GetCacheManager()->RemoveCacheEntry(key);
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::AppendCacheEntryProperty(const std::string& key,
|
|
|
+ const std::string& property,
|
|
|
+ const std::string& value,
|
|
|
+ bool asString)
|
|
|
+{
|
|
|
+ this->CMakeInstance->GetCacheManager()
|
|
|
+ ->GetCacheIterator(key.c_str()).AppendProperty(property,
|
|
|
+ value.c_str(),
|
|
|
+ asString);
|
|
|
+}
|
|
|
+
|
|
|
+void cmState::RemoveCacheEntryProperty(std::string const& key,
|
|
|
+ std::string const& propertyName)
|
|
|
+{
|
|
|
+ this->CMakeInstance->GetCacheManager()
|
|
|
+ ->GetCacheIterator(key.c_str()).SetProperty(propertyName, (void*)0);
|
|
|
+}
|