summaryrefslogtreecommitdiffstats
path: root/Source/cmState.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmState.h')
-rw-r--r--Source/cmState.h245
1 files changed, 38 insertions, 207 deletions
diff --git a/Source/cmState.h b/Source/cmState.h
index feed1c7..41ffcdc 100644
--- a/Source/cmState.h
+++ b/Source/cmState.h
@@ -5,220 +5,51 @@
#include <cmConfigure.h> // IWYU pragma: keep
-#include "cmAlgorithms.h"
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
#include "cmDefinitions.h"
#include "cmLinkedTree.h"
-#include "cmPolicies.h"
#include "cmProperty.h"
#include "cmPropertyDefinitionMap.h"
#include "cmPropertyMap.h"
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
+#include "cmStatePrivate.h"
+#include "cmStateTypes.h"
class cmCacheManager;
class cmCommand;
-class cmListFileBacktrace;
class cmPropertyDefinition;
+class cmStateSnapshot;
class cmState
{
- struct SnapshotDataType;
- struct PolicyStackEntry;
- struct BuildsystemDirectoryStateType;
- typedef cmLinkedTree<SnapshotDataType>::iterator PositionType;
- friend class Snapshot;
+ friend class cmStateSnapshot;
public:
cmState();
~cmState();
- enum SnapshotType
- {
- BaseType,
- BuildsystemDirectoryType,
- FunctionCallType,
- MacroCallType,
- IncludeFileType,
- InlineListFileType,
- PolicyScopeType,
- VariableScopeType
- };
-
- class Directory;
-
- class Snapshot
- {
- public:
- Snapshot(cmState* state = CM_NULLPTR);
- Snapshot(cmState* state, PositionType position);
-
- const char* GetDefinition(std::string const& name) const;
- bool IsInitialized(std::string const& name) const;
- void SetDefinition(std::string const& name, std::string const& value);
- void RemoveDefinition(std::string const& name);
- std::vector<std::string> UnusedKeys() const;
- std::vector<std::string> ClosureKeys() const;
- bool RaiseScope(std::string const& var, const char* varDef);
-
- void SetListFile(std::string const& listfile);
-
- std::string GetExecutionListFile() const;
-
- std::vector<Snapshot> GetChildren();
-
- bool IsValid() const;
- Snapshot GetBuildsystemDirectoryParent() const;
- Snapshot GetCallStackParent() const;
- Snapshot GetCallStackBottom() const;
- SnapshotType GetType() const;
-
- void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
- cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id) const;
- bool HasDefinedPolicyCMP0011();
- void PushPolicy(cmPolicies::PolicyMap entry, bool weak);
- bool PopPolicy();
- bool CanPopPolicyScope();
-
- cmState* GetState() const;
-
- Directory GetDirectory() const;
-
- void SetProjectName(std::string const& name);
- std::string GetProjectName() const;
-
- void InitializeFromParent_ForSubdirsCommand();
-
- struct StrictWeakOrder
- {
- bool operator()(const cmState::Snapshot& lhs,
- const cmState::Snapshot& rhs) const;
- };
-
- void SetDirectoryDefinitions();
- void SetDefaultDefinitions();
-
- private:
- friend bool operator==(const cmState::Snapshot& lhs,
- const cmState::Snapshot& rhs);
- friend bool operator!=(const cmState::Snapshot& lhs,
- const cmState::Snapshot& rhs);
- friend class cmState;
- friend class Directory;
- friend struct StrictWeakOrder;
-
- void InitializeFromParent();
-
- cmState* State;
- cmState::PositionType Position;
- };
-
- class Directory
- {
- Directory(cmLinkedTree<BuildsystemDirectoryStateType>::iterator iter,
- Snapshot const& snapshot);
-
- public:
- const char* GetCurrentSource() const;
- void SetCurrentSource(std::string const& dir);
- const char* GetCurrentBinary() const;
- void SetCurrentBinary(std::string const& dir);
-
- const char* GetRelativePathTopSource() const;
- const char* GetRelativePathTopBinary() const;
- void SetRelativePathTopSource(const char* dir);
- void SetRelativePathTopBinary(const char* dir);
-
- cmStringRange GetIncludeDirectoriesEntries() const;
- cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
- void AppendIncludeDirectoriesEntry(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void PrependIncludeDirectoriesEntry(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void SetIncludeDirectories(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void ClearIncludeDirectories();
-
- cmStringRange GetCompileDefinitionsEntries() const;
- cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
- void AppendCompileDefinitionsEntry(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void SetCompileDefinitions(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void ClearCompileDefinitions();
-
- cmStringRange GetCompileOptionsEntries() const;
- cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
- void AppendCompileOptionsEntry(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void SetCompileOptions(std::string const& vec,
- cmListFileBacktrace const& lfbt);
- void ClearCompileOptions();
-
- void SetProperty(const std::string& prop, const char* value,
- cmListFileBacktrace const& lfbt);
- void AppendProperty(const std::string& prop, const char* value,
- bool asString, cmListFileBacktrace const& lfbt);
- const char* GetProperty(const std::string& prop) const;
- const char* GetProperty(const std::string& prop, bool chain) const;
- bool GetPropertyAsBool(const std::string& prop) const;
- std::vector<std::string> GetPropertyKeys() const;
-
- void AddNormalTargetName(std::string const& name);
-
- private:
- void ComputeRelativePathTopSource();
- void ComputeRelativePathTopBinary();
-
- private:
- cmLinkedTree<BuildsystemDirectoryStateType>::iterator DirectoryState;
- Snapshot Snapshot_;
- friend class Snapshot;
- };
-
- enum TargetType
- {
- EXECUTABLE,
- STATIC_LIBRARY,
- SHARED_LIBRARY,
- MODULE_LIBRARY,
- OBJECT_LIBRARY,
- UTILITY,
- GLOBAL_TARGET,
- INTERFACE_LIBRARY,
- UNKNOWN_LIBRARY
- };
-
- static const char* GetTargetTypeName(cmState::TargetType targetType);
-
- Snapshot CreateBaseSnapshot();
- Snapshot CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot);
- Snapshot CreateFunctionCallSnapshot(Snapshot originSnapshot,
- std::string const& fileName);
- Snapshot CreateMacroCallSnapshot(Snapshot originSnapshot,
- std::string const& fileName);
- Snapshot CreateIncludeFileSnapshot(Snapshot originSnapshot,
- std::string const& fileName);
- Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot);
- Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot,
- std::string const& fileName);
- Snapshot CreatePolicyScopeSnapshot(Snapshot originSnapshot);
- Snapshot Pop(Snapshot originSnapshot);
-
- enum CacheEntryType
- {
- BOOL = 0,
- PATH,
- FILEPATH,
- STRING,
- INTERNAL,
- STATIC,
- UNINITIALIZED
- };
- static CacheEntryType StringToCacheEntryType(const char*);
- static const char* CacheEntryTypeToString(CacheEntryType);
+ static const char* GetTargetTypeName(cmStateEnums::TargetType targetType);
+
+ cmStateSnapshot CreateBaseSnapshot();
+ cmStateSnapshot CreateBuildsystemDirectorySnapshot(
+ cmStateSnapshot originSnapshot);
+ cmStateSnapshot CreateFunctionCallSnapshot(cmStateSnapshot originSnapshot,
+ std::string const& fileName);
+ cmStateSnapshot CreateMacroCallSnapshot(cmStateSnapshot originSnapshot,
+ std::string const& fileName);
+ cmStateSnapshot CreateIncludeFileSnapshot(cmStateSnapshot originSnapshot,
+ std::string const& fileName);
+ cmStateSnapshot CreateVariableScopeSnapshot(cmStateSnapshot originSnapshot);
+ cmStateSnapshot CreateInlineListFileSnapshot(cmStateSnapshot originSnapshot,
+ std::string const& fileName);
+ cmStateSnapshot CreatePolicyScopeSnapshot(cmStateSnapshot originSnapshot);
+ cmStateSnapshot Pop(cmStateSnapshot originSnapshot);
+
+ static cmStateEnums::CacheEntryType StringToCacheEntryType(const char*);
+ static const char* CacheEntryTypeToString(cmStateEnums::CacheEntryType);
static bool IsCacheEntryType(std::string const& key);
bool LoadCache(const std::string& path, bool internal,
@@ -232,7 +63,7 @@ public:
std::vector<std::string> GetCacheEntryKeys() const;
const char* GetCacheEntryValue(std::string const& key) const;
const char* GetInitializedCacheValue(std::string const& key) const;
- CacheEntryType GetCacheEntryType(std::string const& key) const;
+ cmStateEnums::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);
@@ -257,9 +88,10 @@ public:
///! Break up a line like VAR:type="value" into var, type and value
static bool ParseCacheEntry(const std::string& entry, std::string& var,
- std::string& value, CacheEntryType& type);
+ std::string& value,
+ cmStateEnums::CacheEntryType& type);
- Snapshot Reset();
+ cmStateSnapshot Reset();
// Define a property
void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
const char* ShortDescription,
@@ -321,7 +153,8 @@ public:
private:
friend class cmake;
void AddCacheEntry(const std::string& key, const char* value,
- const char* helpString, CacheEntryType type);
+ const char* helpString,
+ cmStateEnums::CacheEntryType type);
std::map<cmProperty::ScopeType, cmPropertyDefinitionMap> PropertyDefinitions;
std::vector<std::string> EnabledLanguages;
@@ -329,12 +162,13 @@ private:
cmPropertyMap GlobalProperties;
cmCacheManager* CacheManager;
- cmLinkedTree<BuildsystemDirectoryStateType> BuildsystemDirectory;
+ cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>
+ BuildsystemDirectory;
cmLinkedTree<std::string> ExecutionListFiles;
- cmLinkedTree<PolicyStackEntry> PolicyStack;
- cmLinkedTree<SnapshotDataType> SnapshotData;
+ cmLinkedTree<cmStateDetail::PolicyStackEntry> PolicyStack;
+ cmLinkedTree<cmStateDetail::SnapshotDataType> SnapshotData;
cmLinkedTree<cmDefinitions> VarTree;
std::string SourceDirectory;
@@ -348,7 +182,4 @@ private:
bool MSYSShell;
};
-bool operator==(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
-bool operator!=(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
-
#endif