diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2019-03-23 18:38:30 (GMT) |
---|---|---|
committer | Sebastian Holtermann <sebholt@xwmw.org> | 2019-03-23 21:22:34 (GMT) |
commit | de0d57c97abe88a1025d5a26ed94a82438468349 (patch) | |
tree | e87f638c094b27dd37fdb2af9895bc618f941c67 /Source/cmTarget.h | |
parent | ecc782c75d7ce98c03164f616e9adf9760ce0d7f (diff) | |
download | CMake-de0d57c97abe88a1025d5a26ed94a82438468349.zip CMake-de0d57c97abe88a1025d5a26ed94a82438468349.tar.gz CMake-de0d57c97abe88a1025d5a26ed94a82438468349.tar.bz2 |
cmTarget: Use std::unique_ptr instead of custom smart pointer
To manage the lifetime of `cmTargetInternals`, the private implementation of
`cmTarget`, use `std::unique_ptr<cmTargetInternals>` instead of
`cmTargetInternalPointer`, which is removed.
`cmTarget` is made non-copyable but movable.
Diffstat (limited to 'Source/cmTarget.h')
-rw-r--r-- | Source/cmTarget.h | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/Source/cmTarget.h b/Source/cmTarget.h index f6ccdb4..5d90ba7 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -6,6 +6,7 @@ #include "cmConfigure.h" // IWYU pragma: keep #include <iosfwd> +#include <memory> // IWYU pragma: keep #include <set> #include <string> #include <unordered_map> @@ -26,20 +27,6 @@ class cmPropertyMap; class cmSourceFile; class cmTargetInternals; -class cmTargetInternalPointer -{ -public: - cmTargetInternalPointer(); - cmTargetInternalPointer(cmTargetInternalPointer const& r); - ~cmTargetInternalPointer(); - cmTargetInternalPointer& operator=(cmTargetInternalPointer const& r); - cmTargetInternals* operator->() const { return this->Pointer; } - cmTargetInternals* Get() const { return this->Pointer; } - -private: - cmTargetInternals* Pointer; -}; - /** \class cmTarget * \brief Represent a library or executable target loaded from a makefile. * @@ -55,9 +42,6 @@ public: VisibilityImportedGlobally }; - cmTarget(std::string const& name, cmStateEnums::TargetType type, - Visibility vis, cmMakefile* mf); - enum CustomCommandType { PRE_BUILD, @@ -65,6 +49,16 @@ public: POST_BUILD }; + cmTarget(std::string const& name, cmStateEnums::TargetType type, + Visibility vis, cmMakefile* mf); + + cmTarget(cmTarget const&) = delete; + cmTarget(cmTarget&&) noexcept; + ~cmTarget(); + + cmTarget& operator=(cmTarget const&) = delete; + cmTarget& operator=(cmTarget&&) noexcept; + ///! Return the type of target. cmStateEnums::TargetType GetType() const; @@ -263,7 +257,7 @@ private: cmStateEnums::ArtifactType artifact) const; private: - cmTargetInternalPointer impl; + std::unique_ptr<cmTargetInternals> impl; }; typedef std::unordered_map<std::string, cmTarget> cmTargets; |