| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| |
| #pragma once |
| |
| #include "cmConfigure.h" // IWYU pragma: keep |
| |
| #include <string> |
| #include <vector> |
| |
| #include "cmDefinitions.h" |
| #include "cmLinkedTree.h" |
| #include "cmListFileCache.h" |
| #include "cmPolicies.h" |
| #include "cmPropertyMap.h" |
| #include "cmStateSnapshot.h" |
| #include "cmStateTypes.h" |
| |
| namespace cmStateDetail { |
| struct BuildsystemDirectoryStateType; |
| struct PolicyStackEntry; |
| } // namespace cmStateDetail |
| |
| static const std::string cmPropertySentinal = std::string(); |
| |
| struct cmStateDetail::SnapshotDataType |
| { |
| cmStateDetail::PositionType ScopeParent; |
| cmStateDetail::PositionType DirectoryParent; |
| cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator Policies; |
| cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyRoot; |
| cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyScope; |
| cmStateEnums::SnapshotType SnapshotType; |
| bool Keep; |
| cmLinkedTree<std::string>::iterator ExecutionListFile; |
| cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator |
| BuildSystemDirectory; |
| cmLinkedTree<cmDefinitions>::iterator Vars; |
| cmLinkedTree<cmDefinitions>::iterator Root; |
| cmLinkedTree<cmDefinitions>::iterator Parent; |
| std::vector<std::string>::size_type IncludeDirectoryPosition; |
| std::vector<std::string>::size_type CompileDefinitionsPosition; |
| std::vector<std::string>::size_type CompileOptionsPosition; |
| std::vector<std::string>::size_type LinkOptionsPosition; |
| std::vector<std::string>::size_type LinkDirectoriesPosition; |
| }; |
| |
| struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap |
| { |
| using derived = cmPolicies::PolicyMap; |
| PolicyStackEntry(bool w = false) |
| : Weak(w) |
| { |
| } |
| PolicyStackEntry(derived const& d, bool w) |
| : derived(d) |
| , Weak(w) |
| { |
| } |
| bool Weak; |
| }; |
| |
| struct cmStateDetail::BuildsystemDirectoryStateType |
| { |
| cmStateDetail::PositionType CurrentScope; |
| |
| std::string Location; |
| std::string OutputLocation; |
| |
| std::vector<BT<std::string>> IncludeDirectories; |
| |
| std::vector<BT<std::string>> CompileDefinitions; |
| |
| std::vector<BT<std::string>> CompileOptions; |
| |
| std::vector<BT<std::string>> LinkOptions; |
| |
| std::vector<BT<std::string>> LinkDirectories; |
| |
| std::vector<std::string> NormalTargetNames; |
| std::vector<std::string> ImportedTargetNames; |
| |
| std::string ProjectName; |
| |
| cmPropertyMap Properties; |
| |
| std::vector<cmStateSnapshot> Children; |
| }; |