Coverage Report

Created: 2026-09-14 06:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmStateSnapshot.h
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
4
#pragma once
5
6
#include "cmConfigure.h" // IWYU pragma: keep
7
8
#include <string>
9
#include <vector>
10
11
#include <cm/string_view>
12
13
#include "cmDiagnostics.h"
14
#include "cmPolicies.h"
15
#include "cmStateTypes.h"
16
#include "cmValue.h"
17
18
class cmPackageState;
19
class cmState;
20
class cmStateDirectory;
21
22
class cmStateSnapshot
23
{
24
public:
25
  cmStateSnapshot(cmState* state = nullptr);
26
  cmStateSnapshot(cmState* state, cmStateDetail::PositionType position);
27
28
  cmValue GetDefinition(std::string const& name) const;
29
  bool IsInitialized(std::string const& name) const;
30
  void SetDefinition(std::string const& name, cm::string_view value);
31
  void RemoveDefinition(std::string const& name);
32
  std::vector<std::string> ClosureKeys() const;
33
  std::vector<std::string> LocalKeys() const;
34
  bool RaiseScope(std::string const& var, char const* varDef);
35
36
  enum class CheckCMP0220
37
  {
38
    No,
39
    Yes,
40
  };
41
  enum class WarnCMP0220
42
  {
43
    No,
44
    Yes,
45
  };
46
  WarnCMP0220 RaiseToRoot(std::string const& var, char const* varDef,
47
                          CheckCMP0220 checkCMP0220);
48
49
  void SetListFile(std::string const& listfile);
50
51
  std::string const& GetExecutionListFile() const;
52
53
  std::vector<cmStateSnapshot> GetChildren();
54
55
  bool IsValid() const;
56
  cmStateSnapshot GetBuildsystemDirectory() const;
57
  cmStateSnapshot GetBuildsystemDirectoryParent() const;
58
  cmStateSnapshot GetCallStackParent() const;
59
  cmStateSnapshot GetCallStackBottom() const;
60
  cmStateEnums::SnapshotType GetType() const;
61
62
  cmStateEnums::SnapshotUnwindType GetUnwindType() const;
63
  void SetUnwindType(cmStateEnums::SnapshotUnwindType type);
64
65
  cmStateEnums::SnapshotUnwindState GetUnwindState() const;
66
  void SetUnwindState(cmStateEnums::SnapshotUnwindState state);
67
68
  void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
69
  cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id,
70
                                     bool parent_scope = false) const;
71
  cmPolicies::PolicyStatus GetScopePolicy(cmPolicies::PolicyID id) const;
72
  void PushPolicy(cmPolicies::PolicyMap const& entry, bool weak);
73
  bool PopPolicy();
74
  bool CanPopPolicyScope() const;
75
76
  void SetDiagnostic(cmDiagnosticCategory category, cmDiagnosticAction action,
77
                     bool recursive);
78
  void PromoteDiagnostic(cmDiagnosticCategory category,
79
                         cmDiagnosticAction action, bool recursive);
80
  void DemoteDiagnostic(cmDiagnosticCategory category,
81
                        cmDiagnosticAction action, bool recursive);
82
  cmDiagnosticAction GetDiagnostic(cmDiagnosticCategory category,
83
                                   cmDiagnosticAction defaultAction) const;
84
  cmDiagnosticAction GetDiagnostic(cmDiagnosticCategory category) const
85
0
  {
86
0
    return this->GetDiagnostic(
87
0
      category, cmDiagnostics::CategoryInfo[category].DefaultAction);
88
0
  }
89
  void PushDiagnostic(cmDiagnostics::DiagnosticMap entry, bool weak);
90
  bool PopDiagnostic();
91
  bool CanPopDiagnosticScope() const;
92
93
  cmState* GetState() const;
94
95
  cmStateDirectory GetDirectory() const;
96
97
  void SetProjectName(std::string const& name);
98
  std::string GetProjectName() const;
99
  bool CheckProjectName(std::string const& name) const;
100
101
  cmPackageState& GetPackageState(std::string const& packagePath);
102
103
  void InitializeFromParent_ForSubdirsCommand();
104
105
  struct StrictWeakOrder
106
  {
107
    bool operator()(cmStateSnapshot const& lhs,
108
                    cmStateSnapshot const& rhs) const;
109
  };
110
111
  void SetDirectoryDefinitions();
112
  void SetDefaultDefinitions();
113
114
private:
115
  friend bool operator==(cmStateSnapshot const& lhs,
116
                         cmStateSnapshot const& rhs);
117
  friend bool operator!=(cmStateSnapshot const& lhs,
118
                         cmStateSnapshot const& rhs);
119
  friend class cmState;
120
  friend class cmStateDirectory;
121
  friend struct StrictWeakOrder;
122
123
  void InitializeFromParent();
124
125
  using AlterDiagnosticFunction = bool (*)(cmDiagnosticAction current,
126
                                           cmDiagnosticAction desired);
127
  void AlterDiagnostic(cmDiagnosticCategory category,
128
                       cmDiagnosticAction action,
129
                       AlterDiagnosticFunction function, bool recursive);
130
131
  cmState* State;
132
  cmStateDetail::PositionType Position;
133
};
134
135
bool operator==(cmStateSnapshot const& lhs, cmStateSnapshot const& rhs);
136
bool operator!=(cmStateSnapshot const& lhs, cmStateSnapshot const& rhs);