CMake Nightly Date Stamp
[kiteware-cmake.git] / Source / cmStateSnapshot.h
blob1796d760b13361998eff09030cccc07e86a2d146
1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
4 #pragma once
6 #include "cmConfigure.h" // IWYU pragma: keep
8 #include <string>
9 #include <vector>
11 #include <cm/string_view>
13 #include "cmPolicies.h"
14 #include "cmStateTypes.h"
15 #include "cmValue.h"
17 class cmState;
18 class cmStateDirectory;
20 class cmStateSnapshot
22 public:
23 cmStateSnapshot(cmState* state = nullptr);
24 cmStateSnapshot(cmState* state, cmStateDetail::PositionType position);
26 cmValue GetDefinition(std::string const& name) const;
27 bool IsInitialized(std::string const& name) const;
28 void SetDefinition(std::string const& name, cm::string_view value);
29 void RemoveDefinition(std::string const& name);
30 std::vector<std::string> ClosureKeys() const;
31 bool RaiseScope(std::string const& var, const char* varDef);
33 void SetListFile(std::string const& listfile);
35 std::string const& GetExecutionListFile() const;
37 std::vector<cmStateSnapshot> GetChildren();
39 bool IsValid() const;
40 cmStateSnapshot GetBuildsystemDirectory() const;
41 cmStateSnapshot GetBuildsystemDirectoryParent() const;
42 cmStateSnapshot GetCallStackParent() const;
43 cmStateSnapshot GetCallStackBottom() const;
44 cmStateEnums::SnapshotType GetType() const;
46 void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
47 cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id,
48 bool parent_scope = false) const;
49 bool HasDefinedPolicyCMP0011();
50 void PushPolicy(cmPolicies::PolicyMap const& entry, bool weak);
51 bool PopPolicy();
52 bool CanPopPolicyScope();
54 cmState* GetState() const;
56 cmStateDirectory GetDirectory() const;
58 void SetProjectName(std::string const& name);
59 std::string GetProjectName() const;
61 void InitializeFromParent_ForSubdirsCommand();
63 struct StrictWeakOrder
65 bool operator()(const cmStateSnapshot& lhs,
66 const cmStateSnapshot& rhs) const;
69 void SetDirectoryDefinitions();
70 void SetDefaultDefinitions();
72 private:
73 friend bool operator==(const cmStateSnapshot& lhs,
74 const cmStateSnapshot& rhs);
75 friend bool operator!=(const cmStateSnapshot& lhs,
76 const cmStateSnapshot& rhs);
77 friend class cmState;
78 friend class cmStateDirectory;
79 friend struct StrictWeakOrder;
81 void InitializeFromParent();
83 cmState* State;
84 cmStateDetail::PositionType Position;
87 bool operator==(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);
88 bool operator!=(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);