/* 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 #include #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::iterator Policies; cmLinkedTree::iterator PolicyRoot; cmLinkedTree::iterator PolicyScope; cmStateEnums::SnapshotType SnapshotType; bool Keep; cmLinkedTree::iterator ExecutionListFile; cmLinkedTree::iterator BuildSystemDirectory; cmLinkedTree::iterator Vars; cmLinkedTree::iterator Root; cmLinkedTree::iterator Parent; std::vector::size_type IncludeDirectoryPosition; std::vector::size_type CompileDefinitionsPosition; std::vector::size_type CompileOptionsPosition; std::vector::size_type LinkOptionsPosition; std::vector::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 DirectoryEnd; std::string Location; std::string OutputLocation; std::vector IncludeDirectories; std::vector IncludeDirectoryBacktraces; std::vector CompileDefinitions; std::vector CompileDefinitionsBacktraces; std::vector CompileOptions; std::vector CompileOptionsBacktraces; std::vector LinkOptions; std::vector LinkOptionsBacktraces; std::vector LinkDirectories; std::vector LinkDirectoriesBacktraces; std::vector NormalTargetNames; std::vector ImportedTargetNames; std::string ProjectName; cmPropertyMap Properties; std::vector Children; };