diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-06-29 12:58:57 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-06-29 12:58:57 +0300 |
commit | 9298f2a4e52d8b011b19331041455a45d57678b6 (patch) | |
tree | e60a89f4ef6ed4a75c79adc49250602a386e169a /src/RepRapFirmware.h | |
parent | 60a2067eaac8fa64473c3068caaca5e7902817d7 (diff) |
Refactored swap-and-delete operations
Diffstat (limited to 'src/RepRapFirmware.h')
-rw-r--r-- | src/RepRapFirmware.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/RepRapFirmware.h b/src/RepRapFirmware.h index 42977578..65b2ff8d 100644 --- a/src/RepRapFirmware.h +++ b/src/RepRapFirmware.h @@ -449,13 +449,21 @@ private: }; // Function to delete an object and clear the pointer. Safe to call even if the pointer is already null. -template <typename T> void DeleteAndClear(T*& ptr) noexcept +template <typename T> void DeleteObject(T*& ptr) noexcept { T* p2 = nullptr; std::swap(ptr, p2); delete p2; } +// Function to make a pointer point to a new object and delete the existing object, if any. T2 must be the same as T or derived from it. +template <typename T, typename T2> void ReplaceObject(T*& ptr, T2* pNew) noexcept +{ + T* p2 = pNew; + std::swap(ptr, p2); + delete p2; +} + // Common definitions used by more than one module constexpr size_t XY_AXES = 2; // The number of Cartesian axes |