From 568f984b0bfc4b22eaa5c44ecb9d809750bc0287 Mon Sep 17 00:00:00 2001 From: Ajinkya Dahale Date: Tue, 27 Aug 2024 09:00:36 +0530 Subject: [PATCH] [planegcs] Refactor pointer vector freeing Remove the type-checks in `free(std::vector& constrvec)` as well as checks for `nullptr` before deleting. --- src/Mod/Sketcher/App/planegcs/GCS.cpp | 66 +++++---------------------- src/Mod/Sketcher/App/planegcs/GCS.h | 6 +-- 2 files changed, 15 insertions(+), 57 deletions(-) diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp index 17cdc21a21..6bf522a210 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.cpp +++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp @@ -525,7 +525,7 @@ void System::clear() reference.clear(); clearSubSystems(); - free(clist); + deleteAllContent(clist); c2p.clear(); p2c.clear(); } @@ -5823,12 +5823,11 @@ void System::identifyConflictingRedundantConstraints( nonredundantconstrNum = constrNum; } - void System::clearSubSystems() { isInit = false; - free(subSystems); - free(subSystemsAux); + deleteAllContent(subSystems); + deleteAllContent(subSystemsAux); subSystems.clear(); subSystemsAux.clear(); } @@ -5910,67 +5909,26 @@ double lineSearch(SubSystem* subsys, Eigen::VectorXd& xdir) return alphaStar; } -void free(VEC_pD& doublevec) +void deleteAllContent(VEC_pD& doublevec) { - for (VEC_pD::iterator it = doublevec.begin(); it != doublevec.end(); ++it) { - if (*it) { - delete *it; - } + for (auto& doubleptr : doublevec) { + delete doubleptr; } doublevec.clear(); } -void free(std::vector& constrvec) +void deleteAllContent(std::vector& constrvec) { - for (std::vector::iterator constr = constrvec.begin(); constr != constrvec.end(); - ++constr) { - if (*constr) { - switch ((*constr)->getTypeId()) { - case Equal: - delete static_cast(*constr); - break; - case Difference: - delete static_cast(*constr); - break; - case P2PDistance: - delete static_cast(*constr); - break; - case P2PAngle: - delete static_cast(*constr); - break; - case P2LDistance: - delete static_cast(*constr); - break; - case PointOnLine: - delete static_cast(*constr); - break; - case Parallel: - delete static_cast(*constr); - break; - case Perpendicular: - delete static_cast(*constr); - break; - case L2LAngle: - delete static_cast(*constr); - break; - case MidpointOnLine: - delete static_cast(*constr); - break; - case None: - default: - delete *constr; - } - } + for (auto& constr : constrvec) { + delete constr; } constrvec.clear(); } -void free(std::vector& subsysvec) +void deleteAllContent(std::vector& subsysvec) { - for (std::vector::iterator it = subsysvec.begin(); it != subsysvec.end(); ++it) { - if (*it) { - delete *it; - } + for (auto& subsys : subsysvec) { + delete subsys; } } diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h index 6b0b12da05..440c8d278e 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.h +++ b/src/Mod/Sketcher/App/planegcs/GCS.h @@ -633,9 +633,9 @@ protected: // Helper elements /////////////////////////////////////// -void free(VEC_pD& doublevec); -void free(std::vector& constrvec); -void free(std::vector& subsysvec); +void deleteAllContent(VEC_pD& doublevec); +void deleteAllContent(std::vector& constrvec); +void deleteAllContent(std::vector& subsysvec); } // namespace GCS