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 "cmAlgorithms.h"
12 #include "cmLinkedTree.h"
13 #include "cmStatePrivate.h"
14 #include "cmStateSnapshot.h"
17 class cmListFileBacktrace;
21 class cmStateDirectory
24 cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
25 cmStateSnapshot const& snapshot);
28 std::string const& GetCurrentSource() const;
29 void SetCurrentSource(std::string const& dir);
30 std::string const& GetCurrentBinary() const;
31 void SetCurrentBinary(std::string const& dir);
33 cmBTStringRange GetIncludeDirectoriesEntries() const;
34 void AppendIncludeDirectoriesEntry(BT<std::string> const& vec);
35 void PrependIncludeDirectoriesEntry(BT<std::string> const& vec);
36 void SetIncludeDirectories(BT<std::string> const& vec);
37 void ClearIncludeDirectories();
39 cmBTStringRange GetCompileDefinitionsEntries() const;
40 void AppendCompileDefinitionsEntry(BT<std::string> const& vec);
41 void SetCompileDefinitions(BT<std::string> const& vec);
42 void ClearCompileDefinitions();
44 cmBTStringRange GetCompileOptionsEntries() const;
45 void AppendCompileOptionsEntry(BT<std::string> const& vec);
46 void SetCompileOptions(BT<std::string> const& vec);
47 void ClearCompileOptions();
49 cmBTStringRange GetLinkOptionsEntries() const;
50 void AppendLinkOptionsEntry(BT<std::string> const& vec);
51 void PrependLinkDirectoriesEntry(BT<std::string> const& vec);
52 void SetLinkOptions(BT<std::string> const& vec);
53 void ClearLinkOptions();
55 cmBTStringRange GetLinkDirectoriesEntries() const;
56 void AppendLinkDirectoriesEntry(BT<std::string> const& vec);
57 void SetLinkDirectories(BT<std::string> const& vecs);
58 void ClearLinkDirectories();
60 void SetProperty(const std::string& prop, const char* value,
61 cmListFileBacktrace const& lfbt);
62 void SetProperty(const std::string& prop, cmValue value,
63 cmListFileBacktrace const& lfbt);
64 void AppendProperty(const std::string& prop, const std::string& value,
65 bool asString, cmListFileBacktrace const& lfbt);
66 cmValue GetProperty(const std::string& prop) const;
67 cmValue GetProperty(const std::string& prop, bool chain) const;
68 bool GetPropertyAsBool(const std::string& prop) const;
69 std::vector<std::string> GetPropertyKeys() const;
71 void AddNormalTargetName(std::string const& name);
72 void AddImportedTargetName(std::string const& name);
75 template <typename ValueType>
76 void StoreProperty(const std::string& prop, ValueType value,
77 cmListFileBacktrace const& lfbt);
79 cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
81 cmStateSnapshot Snapshot_;
82 friend class cmStateSnapshot;