Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2021-06-29 12:58:57 +0300
committerDavid Crocker <dcrocker@eschertech.com>2021-06-29 12:58:57 +0300
commit9298f2a4e52d8b011b19331041455a45d57678b6 (patch)
treee60a89f4ef6ed4a75c79adc49250602a386e169a /src/RepRapFirmware.h
parent60a2067eaac8fa64473c3068caaca5e7902817d7 (diff)
Refactored swap-and-delete operations
Diffstat (limited to 'src/RepRapFirmware.h')
-rw-r--r--src/RepRapFirmware.h10
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