1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
6 #include "cmConfigure.h" // IWYU pragma: keep
11 #include <cm/string_view>
13 #include "cmLinkedTree.h"
14 #include "cmPolicies.h"
15 #include "cmStateTypes.h"
19 class cmStateDirectory;
24 cmStateSnapshot(cmState* state = nullptr);
25 cmStateSnapshot(cmState* state, cmStateDetail::PositionType position);
27 cmValue GetDefinition(std::string const& name) const;
28 bool IsInitialized(std::string const& name) const;
29 void SetDefinition(std::string const& name, cm::string_view value);
30 void RemoveDefinition(std::string const& name);
31 std::vector<std::string> ClosureKeys() const;
32 bool RaiseScope(std::string const& var, const char* varDef);
34 void SetListFile(std::string const& listfile);
36 std::string const& GetExecutionListFile() const;
38 std::vector<cmStateSnapshot> GetChildren();
41 cmStateSnapshot GetBuildsystemDirectory() const;
42 cmStateSnapshot GetBuildsystemDirectoryParent() const;
43 cmStateSnapshot GetCallStackParent() const;
44 cmStateSnapshot GetCallStackBottom() const;
45 cmStateEnums::SnapshotType GetType() const;
47 void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
48 cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id,
49 bool parent_scope = false) const;
50 bool HasDefinedPolicyCMP0011();
51 void PushPolicy(cmPolicies::PolicyMap const& entry, bool weak);
53 bool CanPopPolicyScope();
55 cmState* GetState() const;
57 cmStateDirectory GetDirectory() const;
59 void SetProjectName(std::string const& name);
60 std::string GetProjectName() const;
62 void InitializeFromParent_ForSubdirsCommand();
64 struct StrictWeakOrder
66 bool operator()(const cmStateSnapshot& lhs,
67 const cmStateSnapshot& rhs) const;
70 void SetDirectoryDefinitions();
71 void SetDefaultDefinitions();
74 friend bool operator==(const cmStateSnapshot& lhs,
75 const cmStateSnapshot& rhs);
76 friend bool operator!=(const cmStateSnapshot& lhs,
77 const cmStateSnapshot& rhs);
79 friend class cmStateDirectory;
80 friend struct StrictWeakOrder;
82 void InitializeFromParent();
85 cmStateDetail::PositionType Position;
88 bool operator==(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);
89 bool operator!=(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);