cmStateDirectory.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. cmStringRange GetIncludeDirectoriesEntries() const;
  28. cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
  29. void AppendIncludeDirectoriesEntry(std::string const& vec,
  30. cmListFileBacktrace const& lfbt);
  31. void PrependIncludeDirectoriesEntry(std::string const& vec,
  32. cmListFileBacktrace const& lfbt);
  33. void SetIncludeDirectories(std::string const& vec,
  34. cmListFileBacktrace const& lfbt);
  35. void ClearIncludeDirectories();
  36. cmStringRange GetCompileDefinitionsEntries() const;
  37. cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
  38. void AppendCompileDefinitionsEntry(std::string const& vec,
  39. cmListFileBacktrace const& lfbt);
  40. void SetCompileDefinitions(std::string const& vec,
  41. cmListFileBacktrace const& lfbt);
  42. void ClearCompileDefinitions();
  43. cmStringRange GetCompileOptionsEntries() const;
  44. cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
  45. void AppendCompileOptionsEntry(std::string const& vec,
  46. cmListFileBacktrace const& lfbt);
  47. void SetCompileOptions(std::string const& vec,
  48. cmListFileBacktrace const& lfbt);
  49. void ClearCompileOptions();
  50. cmStringRange GetLinkOptionsEntries() const;
  51. cmBacktraceRange GetLinkOptionsEntryBacktraces() const;
  52. void AppendLinkOptionsEntry(std::string const& vec,
  53. cmListFileBacktrace const& lfbt);
  54. void SetLinkOptions(std::string const& vec, cmListFileBacktrace const& lfbt);
  55. void ClearLinkOptions();
  56. void SetProperty(const std::string& prop, const char* value,
  57. cmListFileBacktrace const& lfbt);
  58. void AppendProperty(const std::string& prop, const char* value,
  59. bool asString, cmListFileBacktrace const& lfbt);
  60. const char* GetProperty(const std::string& prop) const;
  61. const char* GetProperty(const std::string& prop, bool chain) const;
  62. bool GetPropertyAsBool(const std::string& prop) const;
  63. std::vector<std::string> GetPropertyKeys() const;
  64. void AddNormalTargetName(std::string const& name);
  65. private:
  66. void ComputeRelativePathTopSource();
  67. void ComputeRelativePathTopBinary();
  68. private:
  69. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
  70. DirectoryState;
  71. cmStateSnapshot Snapshot_;
  72. friend class cmStateSnapshot;
  73. };
  74. #endif