Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Source / cmStatePrivate.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt 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 "cmDefinitions.h"
12 #include "cmLinkedTree.h"
13 #include "cmListFileCache.h"
14 #include "cmPolicies.h"
15 #include "cmPropertyMap.h"
16 #include "cmStateSnapshot.h"
17 #include "cmStateTypes.h"
18
19 namespace cmStateDetail {
20 struct BuildsystemDirectoryStateType;
21 struct PolicyStackEntry;
22 } // namespace cmStateDetail
23
24 static const std::string cmPropertySentinal = std::string();
25
26 struct cmStateDetail::SnapshotDataType
27 {
28   cmStateDetail::PositionType ScopeParent;
29   cmStateDetail::PositionType DirectoryParent;
30   cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator Policies;
31   cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyRoot;
32   cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyScope;
33   cmStateEnums::SnapshotType SnapshotType;
34   bool Keep;
35   cmLinkedTree<std::string>::iterator ExecutionListFile;
36   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
37     BuildSystemDirectory;
38   cmLinkedTree<cmDefinitions>::iterator Vars;
39   cmLinkedTree<cmDefinitions>::iterator Root;
40   cmLinkedTree<cmDefinitions>::iterator Parent;
41   std::vector<std::string>::size_type IncludeDirectoryPosition;
42   std::vector<std::string>::size_type CompileDefinitionsPosition;
43   std::vector<std::string>::size_type CompileOptionsPosition;
44   std::vector<std::string>::size_type LinkOptionsPosition;
45   std::vector<std::string>::size_type LinkDirectoriesPosition;
46 };
47
48 struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap
49 {
50   using derived = cmPolicies::PolicyMap;
51   PolicyStackEntry(bool w = false)
52     : Weak(w)
53   {
54   }
55   PolicyStackEntry(derived const& d, bool w)
56     : derived(d)
57     , Weak(w)
58   {
59   }
60   bool Weak;
61 };
62
63 struct cmStateDetail::BuildsystemDirectoryStateType
64 {
65   cmStateDetail::PositionType CurrentScope;
66
67   std::string Location;
68   std::string OutputLocation;
69
70   std::vector<BT<std::string>> IncludeDirectories;
71
72   std::vector<BT<std::string>> CompileDefinitions;
73
74   std::vector<BT<std::string>> CompileOptions;
75
76   std::vector<BT<std::string>> LinkOptions;
77
78   std::vector<BT<std::string>> LinkDirectories;
79
80   std::vector<std::string> NormalTargetNames;
81   std::vector<std::string> ImportedTargetNames;
82
83   std::string ProjectName;
84
85   cmPropertyMap Properties;
86
87   std::vector<cmStateSnapshot> Children;
88 };