From 57ed40912ded21d20370e935590e964b359b873e Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 13 Nov 2022 22:55:10 +0300 Subject: [PATCH] piDeleteAll and piDeleteAllAndClear --- libs/main/core/pibase.h | 9 +++++++++ libs/main/core/piobject.cpp | 1 + 2 files changed, 10 insertions(+) diff --git a/libs/main/core/pibase.h b/libs/main/core/pibase.h index c8eff9d8..d015620e 100644 --- a/libs/main/core/pibase.h +++ b/libs/main/core/pibase.h @@ -868,6 +868,15 @@ template<> inline uint piHash(const float & v) {return (uint)v;} template<> inline uint piHash(const double & v) {return piHashData((const uchar *)&v, sizeof(v));} template<> inline uint piHash(const ldouble & v) {return piHashData((const uchar *)&v, sizeof(v));} +template inline void piDeleteAll(T & container) { + for (auto i: container) + delete i; +} +template inline void piDeleteAllAndClear(T & container) { + piDeleteAll(container); + container.clear(); +} + #define piRoundf piRound #define piRoundd piRound #define piComparef piCompare diff --git a/libs/main/core/piobject.cpp b/libs/main/core/piobject.cpp index dd4eed43..f0cdfac6 100644 --- a/libs/main/core/piobject.cpp +++ b/libs/main/core/piobject.cpp @@ -194,6 +194,7 @@ PIObject::~PIObject() { mutexObjects().unlock(); deleted(this); piDisconnectAll(); + _signature_ = 0; }