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 "cmPolicies.h"
14 #include "cmStateTypes.h"
18 class cmStateDirectory
;
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();
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
);
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();
73 friend bool operator==(const cmStateSnapshot
& lhs
,
74 const cmStateSnapshot
& rhs
);
75 friend bool operator!=(const cmStateSnapshot
& lhs
,
76 const cmStateSnapshot
& rhs
);
78 friend class cmStateDirectory
;
79 friend struct StrictWeakOrder
;
81 void InitializeFromParent();
84 cmStateDetail::PositionType Position
;
87 bool operator==(const cmStateSnapshot
& lhs
, const cmStateSnapshot
& rhs
);
88 bool operator!=(const cmStateSnapshot
& lhs
, const cmStateSnapshot
& rhs
);