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
12 #include "cmAlgorithms.h"
13 #include "cmLinkedTree.h"
14 #include "cmStatePrivate.h"
15 #include "cmStateSnapshot.h"
18 class cmListFileBacktrace
;
22 class cmStateDirectory
25 cmLinkedTree
<cmStateDetail::BuildsystemDirectoryStateType
>::iterator iter
,
26 cmStateSnapshot
const& snapshot
);
29 std::string
const& GetCurrentSource() const;
30 void SetCurrentSource(std::string
const& dir
);
31 std::string
const& GetCurrentBinary() const;
32 void SetCurrentBinary(std::string
const& dir
);
34 cmBTStringRange
GetIncludeDirectoriesEntries() const;
35 void AppendIncludeDirectoriesEntry(BT
<std::string
> const& vec
);
36 void PrependIncludeDirectoriesEntry(BT
<std::string
> const& vec
);
37 void SetIncludeDirectories(BT
<std::string
> const& vec
);
38 void ClearIncludeDirectories();
40 cmBTStringRange
GetCompileDefinitionsEntries() const;
41 void AppendCompileDefinitionsEntry(BT
<std::string
> const& vec
);
42 void SetCompileDefinitions(BT
<std::string
> const& vec
);
43 void ClearCompileDefinitions();
45 cmBTStringRange
GetCompileOptionsEntries() const;
46 void AppendCompileOptionsEntry(BT
<std::string
> const& vec
);
47 void SetCompileOptions(BT
<std::string
> const& vec
);
48 void ClearCompileOptions();
50 cmBTStringRange
GetLinkOptionsEntries() const;
51 void AppendLinkOptionsEntry(BT
<std::string
> const& vec
);
52 void PrependLinkDirectoriesEntry(BT
<std::string
> const& vec
);
53 void SetLinkOptions(BT
<std::string
> const& vec
);
54 void ClearLinkOptions();
56 cmBTStringRange
GetLinkDirectoriesEntries() const;
57 void AppendLinkDirectoriesEntry(BT
<std::string
> const& vec
);
58 void SetLinkDirectories(BT
<std::string
> const& vecs
);
59 void ClearLinkDirectories();
61 void SetProperty(const std::string
& prop
, cmValue value
,
62 cmListFileBacktrace
const& lfbt
);
63 void SetProperty(const std::string
& prop
, std::nullptr_t
,
64 cmListFileBacktrace
const& lfbt
)
66 this->SetProperty(prop
, cmValue
{ nullptr }, lfbt
);
68 void AppendProperty(const std::string
& prop
, const std::string
& value
,
69 bool asString
, cmListFileBacktrace
const& lfbt
);
70 cmValue
GetProperty(const std::string
& prop
) const;
71 cmValue
GetProperty(const std::string
& prop
, bool chain
) const;
72 bool GetPropertyAsBool(const std::string
& prop
) const;
73 std::vector
<std::string
> GetPropertyKeys() const;
75 void AddNormalTargetName(std::string
const& name
);
76 void AddImportedTargetName(std::string
const& name
);
79 template <typename ValueType
>
80 void StoreProperty(const std::string
& prop
, ValueType value
,
81 cmListFileBacktrace
const& lfbt
);
83 cmLinkedTree
<cmStateDetail::BuildsystemDirectoryStateType
>::iterator
85 cmStateSnapshot Snapshot_
;
86 friend class cmStateSnapshot
;