cmStateDirectory.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmStateDirectory_h
  4. #define cmStateDirectory_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <string>
  7. #include <vector>
  8. #include "cmAlgorithms.h"
  9. #include "cmLinkedTree.h"
  10. #include "cmListFileCache.h"
  11. #include "cmStatePrivate.h"
  12. #include "cmStateSnapshot.h"
  13. #include "cmStringAlgorithms.h"
  14. using cmProp = const std::string*;
  15. class cmStateDirectory
  16. {
  17. cmStateDirectory(
  18. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
  19. cmStateSnapshot const& snapshot);
  20. public:
  21. std::string const& GetCurrentSource() const;
  22. void SetCurrentSource(std::string const& dir);
  23. std::string const& GetCurrentBinary() const;
  24. void SetCurrentBinary(std::string const& dir);
  25. std::string const& GetRelativePathTopSource() const;
  26. std::string const& GetRelativePathTopBinary() const;
  27. void SetRelativePathTopSource(const char* dir);
  28. void SetRelativePathTopBinary(const char* dir);
  29. bool ContainsBoth(std::string const& local_path,
  30. std::string const& remote_path) const;
  31. std::string ConvertToRelPathIfNotContained(
  32. std::string const& local_path, std::string const& remote_path) const;
  33. cmStringRange GetIncludeDirectoriesEntries() const;
  34. cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
  35. void AppendIncludeDirectoriesEntry(std::string const& vec,
  36. cmListFileBacktrace const& lfbt);
  37. void PrependIncludeDirectoriesEntry(std::string const& vec,
  38. cmListFileBacktrace const& lfbt);
  39. void SetIncludeDirectories(std::string const& vec,
  40. cmListFileBacktrace const& lfbt);
  41. void ClearIncludeDirectories();
  42. cmStringRange GetCompileDefinitionsEntries() const;
  43. cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
  44. void AppendCompileDefinitionsEntry(std::string const& vec,
  45. cmListFileBacktrace const& lfbt);
  46. void SetCompileDefinitions(std::string const& vec,
  47. cmListFileBacktrace const& lfbt);
  48. void ClearCompileDefinitions();
  49. cmStringRange GetCompileOptionsEntries() const;
  50. cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
  51. void AppendCompileOptionsEntry(std::string const& vec,
  52. cmListFileBacktrace const& lfbt);
  53. void SetCompileOptions(std::string const& vec,
  54. cmListFileBacktrace const& lfbt);
  55. void ClearCompileOptions();
  56. cmStringRange GetLinkOptionsEntries() const;
  57. cmBacktraceRange GetLinkOptionsEntryBacktraces() const;
  58. void AppendLinkOptionsEntry(std::string const& vec,
  59. cmListFileBacktrace const& lfbt);
  60. void PrependLinkDirectoriesEntry(std::string const& vec,
  61. cmListFileBacktrace const& lfbt);
  62. void SetLinkOptions(std::string const& vec, cmListFileBacktrace const& lfbt);
  63. void ClearLinkOptions();
  64. cmStringRange GetLinkDirectoriesEntries() const;
  65. cmBacktraceRange GetLinkDirectoriesEntryBacktraces() const;
  66. void AppendLinkDirectoriesEntry(std::string const& vec,
  67. cmListFileBacktrace const& lfbt);
  68. void SetLinkDirectories(std::string const& vec,
  69. cmListFileBacktrace const& lfbt);
  70. void ClearLinkDirectories();
  71. void SetProperty(const std::string& prop, const char* value,
  72. cmListFileBacktrace const& lfbt);
  73. void AppendProperty(const std::string& prop, const std::string& value,
  74. bool asString, cmListFileBacktrace const& lfbt);
  75. cmProp GetProperty(const std::string& prop) const;
  76. cmProp GetProperty(const std::string& prop, bool chain) const;
  77. bool GetPropertyAsBool(const std::string& prop) const;
  78. std::vector<std::string> GetPropertyKeys() const;
  79. void AddNormalTargetName(std::string const& name);
  80. private:
  81. void ComputeRelativePathTopSource();
  82. void ComputeRelativePathTopBinary();
  83. private:
  84. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
  85. DirectoryState;
  86. cmStateSnapshot Snapshot_;
  87. friend class cmStateSnapshot;
  88. };
  89. #endif