From aecba91311ee8f598dc9c69c17e9bb499a0a43e6 Mon Sep 17 00:00:00 2001 From: X512 Date: Fri, 4 Dec 2020 22:53:08 +0900 Subject: [PATCH] AutoDeleter: move destructor function in MethodDeleter from constructor to template argument The same as CObjectDeleter. Change-Id: I85c4cb3635f01f13e529ca087324cc2fcb42cfc0 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3456 Reviewed-by: Adrien Destugues --- headers/private/shared/AutoDeleter.h | 32 ++++++++++------------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/headers/private/shared/AutoDeleter.h b/headers/private/shared/AutoDeleter.h index 2c2c9d5cf7..429443b029 100644 --- a/headers/private/shared/AutoDeleter.h +++ b/headers/private/shared/AutoDeleter.h @@ -180,42 +180,32 @@ struct CObjectDeleter // MethodDeleter -template +template struct MethodDelete { inline void operator()(Type *object) { - if (fDestructor && object != NULL) - (object->*fDestructor)(); + if (object != NULL) + (object->*Destructor)(); } - - template - inline void operator=(Destructor destructor) - { - fDestructor = destructor; - } - -private: - DestructorReturnType (Type::*fDestructor)(); }; -template +template struct MethodDeleter - : AutoDeleter > + : AutoDeleter > { - typedef AutoDeleter > Base; + typedef AutoDeleter > Base; - template - MethodDeleter(Destructor destructor) : Base() + MethodDeleter() : Base() { - Base::fDelete = destructor; } - template - MethodDeleter(Type *object, Destructor destructor) : Base(object) + MethodDeleter(Type *object) : Base(object) { - Base::fDelete = destructor; } };