cmStateDirectory.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. class cmStateDirectory
  14. {
  15. cmStateDirectory(
  16. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
  17. cmStateSnapshot const& snapshot);
  18. public:
  19. std::string const& GetCurrentSource() const;
  20. void SetCurrentSource(std::string const& dir);
  21. std::string const& GetCurrentBinary() const;
  22. void SetCurrentBinary(std::string const& dir);
  23. std::string const& GetRelativePathTopSource() const;
  24. std::string const& GetRelativePathTopBinary() const;
  25. void SetRelativePathTopSource(const char* dir);
  26. void SetRelativePathTopBinary(const char* dir);
  27. bool ContainsBoth(std::string const& local_path,
  28. std::string const& remote_path) const;
  29. std::string ConvertToRelPathIfNotContained(
  30. std::string const& local_path, std::string const& remote_path) const;
  31. cmStringRange GetIncludeDirectoriesEntries() const;
  32. cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
  33. void AppendIncludeDirectoriesEntry(std::string const& vec,
  34. cmListFileBacktrace const& lfbt);
  35. void PrependIncludeDirectoriesEntry(std::string const& vec,
  36. cmListFileBacktrace const& lfbt);
  37. void SetIncludeDirectories(std::string const& vec,
  38. cmListFileBacktrace const& lfbt);
  39. void ClearIncludeDirectories();
  40. cmStringRange GetCompileDefinitionsEntries() const;
  41. cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
  42. void AppendCompileDefinitionsEntry(std::string const& vec,
  43. cmListFileBacktrace const& lfbt);
  44. void SetCompileDefinitions(std::string const& vec,
  45. cmListFileBacktrace const& lfbt);
  46. void ClearCompileDefinitions();
  47. cmStringRange GetCompileOptionsEntries() const;
  48. cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
  49. void AppendCompileOptionsEntry(std::string const& vec,
  50. cmListFileBacktrace const& lfbt);
  51. void SetCompileOptions(std::string const& vec,
  52. cmListFileBacktrace const& lfbt);
  53. void ClearCompileOptions();
  54. cmStringRange GetLinkOptionsEntries() const;
  55. cmBacktraceRange GetLinkOptionsEntryBacktraces() const;
  56. void AppendLinkOptionsEntry(std::string const& vec,
  57. cmListFileBacktrace const& lfbt);
  58. void PrependLinkDirectoriesEntry(std::string const& vec,
  59. cmListFileBacktrace const& lfbt);
  60. void SetLinkOptions(std::string const& vec, cmListFileBacktrace const& lfbt);
  61. void ClearLinkOptions();
  62. cmStringRange GetLinkDirectoriesEntries() const;
  63. cmBacktraceRange GetLinkDirectoriesEntryBacktraces() const;
  64. void AppendLinkDirectoriesEntry(std::string const& vec,
  65. cmListFileBacktrace const& lfbt);
  66. void SetLinkDirectories(std::string const& vec,
  67. cmListFileBacktrace const& lfbt);
  68. void ClearLinkDirectories();
  69. void SetProperty(const std::string& prop, const char* value,
  70. cmListFileBacktrace const& lfbt);
  71. void AppendProperty(const std::string& prop, const char* value,
  72. bool asString, cmListFileBacktrace const& lfbt);
  73. const char* GetProperty(const std::string& prop) const;
  74. const char* GetProperty(const std::string& prop, bool chain) const;
  75. bool GetPropertyAsBool(const std::string& prop) const;
  76. std::vector<std::string> GetPropertyKeys() const;
  77. void AddNormalTargetName(std::string const& name);
  78. private:
  79. void ComputeRelativePathTopSource();
  80. void ComputeRelativePathTopBinary();
  81. private:
  82. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
  83. DirectoryState;
  84. cmStateSnapshot Snapshot_;
  85. friend class cmStateSnapshot;
  86. };
  87. #endif