summaryrefslogtreecommitdiffstats
path: root/Source/cmState.h
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-04-04 19:20:12 (GMT)
committerBrad King <brad.king@kitware.com>2015-04-13 15:44:14 (GMT)
commita6b1ad1309d14668e572da7937a2a8dda9e1f669 (patch)
tree4c1c5a63d339975c0006347823ee6a9e7ab355b9 /Source/cmState.h
parentba404938a202b51bb82bff8692ed08e53b061ad4 (diff)
downloadCMake-a6b1ad1309d14668e572da7937a2a8dda9e1f669.zip
CMake-a6b1ad1309d14668e572da7937a2a8dda9e1f669.tar.gz
CMake-a6b1ad1309d14668e572da7937a2a8dda9e1f669.tar.bz2
Introduce cmState class.
At this point, it is an interface to the cache. It will be extended to be a universal interface for access to and manipulation of configuration-time data (defintions, properties on targets, directories, source files etc). This will allow porting all command implementations away from the cmMakefile and cmTarget classes, and result in something more-purely related to configuration-time processing of cmake commands. That should serve at least the following goals: * Split the CMake implementation more definitively into three stages: Configuration, computation and generation, and be able to implement each optimally for memory access patterns etc. * Make better IDE integration possible by making more configuration data available. * Make it possiblte to use a smaller library than CMakeLib.a in cpack and ctest, resulting in smaller executables. * Make it possible to run the configure step multiple times in the same CMake run (#14539). Manage its lifetime in the cmake class, and add a convenience accessor to cmMakefile.
Diffstat (limited to 'Source/cmState.h')
-rw-r--r--Source/cmState.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/Source/cmState.h b/Source/cmState.h
new file mode 100644
index 0000000..06b0ec6
--- /dev/null
+++ b/Source/cmState.h
@@ -0,0 +1,62 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2015 Stephen Kelly <steveire@gmail.com>
+
+ 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.
+============================================================================*/
+#ifndef cmState_h
+#define cmState_h
+
+#include "cmCacheManager.h"
+
+class cmake;
+
+class cmState
+{
+public:
+ cmState(cmake* cm);
+
+ static cmCacheManager::CacheEntryType StringToCacheEntryType(const char*);
+ static const char* CacheEntryTypeToString(cmCacheManager::CacheEntryType);
+ static bool IsCacheEntryType(std::string const& key);
+
+ std::vector<std::string> GetCacheEntryKeys() const;
+ const char* GetCacheEntryValue(std::string const& key) const;
+ const char* GetInitializedCacheValue(std::string const& key) const;
+ cmCacheManager::CacheEntryType
+ GetCacheEntryType(std::string const& key) const;
+ void SetCacheEntryValue(std::string const& key, std::string const& value);
+ void SetCacheValue(std::string const& key, std::string const& value);
+
+ void AddCacheEntry(const std::string& key, const char* value,
+ const char* helpString,
+ cmCacheManager::CacheEntryType type);
+ void RemoveCacheEntry(std::string const& key);
+
+ void SetCacheEntryProperty(std::string const& key,
+ std::string const& propertyName,
+ std::string const& value);
+ void SetCacheEntryBoolProperty(std::string const& key,
+ std::string const& propertyName,
+ bool value);
+ const char* GetCacheEntryProperty(std::string const& key,
+ std::string const& propertyName);
+ bool GetCacheEntryPropertyAsBool(std::string const& key,
+ std::string const& propertyName);
+ void AppendCacheEntryProperty(std::string const& key,
+ const std::string& property,
+ const std::string& value,
+ bool asString = false);
+ void RemoveCacheEntryProperty(std::string const& key,
+ std::string const& propertyName);
+
+private:
+ cmake* CMakeInstance;
+};
+
+#endif