cmStateDirectory.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. const char* GetCurrentSource() const;
  20. void SetCurrentSource(std::string const& dir);
  21. const char* GetCurrentBinary() const;
  22. void SetCurrentBinary(std::string const& dir);
  23. const char* GetRelativePathTopSource() const;
  24. const char* 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. void SetProperty(const std::string& prop, const char* value,
  51. cmListFileBacktrace const& lfbt);
  52. void AppendProperty(const std::string& prop, const char* value,
  53. bool asString, cmListFileBacktrace const& lfbt);
  54. const char* GetProperty(const std::string& prop) const;
  55. const char* GetProperty(const std::string& prop, bool chain) const;
  56. bool GetPropertyAsBool(const std::string& prop) const;
  57. std::vector<std::string> GetPropertyKeys() const;
  58. void AddNormalTargetName(std::string const& name);
  59. private:
  60. void ComputeRelativePathTopSource();
  61. void ComputeRelativePathTopBinary();
  62. private:
  63. cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
  64. DirectoryState;
  65. cmStateSnapshot Snapshot_;
  66. friend class cmStateSnapshot;
  67. };
  68. #endif