/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmStatePrivate_h #define cmStatePrivate_h #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; }; struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap { typedef cmPolicies::PolicyMap derived; PolicyStackEntry(bool w = false) : derived() , 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; // The top-most directories for relative path conversion. Both the // source and destination location of a relative path conversion // must be underneath one of these directories (both under source or // both under binary) in order for the relative path to be evaluated // safely by the build tools. std::string RelativePathTopSource; std::string RelativePathTopBinary; std::vector IncludeDirectories; std::vector IncludeDirectoryBacktraces; std::vector CompileDefinitions; std::vector CompileDefinitionsBacktraces; std::vector CompileOptions; std::vector CompileOptionsBacktraces; std::vector NormalTargetNames; std::string ProjectName; cmPropertyMap Properties; std::vector Children; }; #endif