[haiku-commits] Change in haiku[master]: AutoDeleter: move destructor function in MethodDeleter from construct...

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 4 Dec 2020 19:55:25 +0000

From X512 <danger_mail@xxxxxxx>:

X512 has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/3456 ;)


Change subject: AutoDeleter: move destructor function in MethodDeleter from 
constructor to template argument
......................................................................

AutoDeleter: move destructor function in MethodDeleter from constructor to 
template argument

The same as CObjectDeleter.

Change-Id: I85c4cb3635f01f13e529ca087324cc2fcb42cfc0
---
M headers/private/shared/AutoDeleter.h
1 file changed, 8 insertions(+), 21 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/56/3456/1

diff --git a/headers/private/shared/AutoDeleter.h 
b/headers/private/shared/AutoDeleter.h
index f046d47..0675c23 100644
--- a/headers/private/shared/AutoDeleter.h
+++ b/headers/private/shared/AutoDeleter.h
@@ -177,42 +177,29 @@

 // MethodDeleter

-template<typename Type, typename DestructorReturnType>
+template<typename Type, typename DestructorReturnType, DestructorReturnType 
(Type::*Destructor)()>
 struct MethodDelete
 {
        inline void operator()(Type *object)
        {
-               if (fDestructor && object != NULL)
-                       (object->*fDestructor)();
+               if (object != NULL)
+                       (object->*Destructor)();
        }
-
-       template<typename Destructor>
-       inline void operator=(Destructor destructor)
-       {
-               fDestructor = destructor;
-       }
-
-private:
-       DestructorReturnType (Type::*fDestructor)();
 };


-template<typename Type, typename DestructorReturnType = void>
+template<typename Type, typename DestructorReturnType, DestructorReturnType 
(Type::*Destructor)()>
 struct MethodDeleter
-       : AutoDeleter<Type, MethodDelete<Type, DestructorReturnType> >
+       : AutoDeleter<Type, MethodDelete<Type, DestructorReturnType, 
Destructor> >
 {
-       typedef AutoDeleter<Type, MethodDelete<Type, DestructorReturnType> > 
Base;
+       typedef AutoDeleter<Type, MethodDelete<Type, DestructorReturnType, 
Destructor> > Base;

-       template<typename Destructor>
-       MethodDeleter(Destructor destructor) : Base()
+       MethodDeleter() : Base()
        {
-               Base::fDelete = destructor;
        }

-       template<typename Destructor>
-       MethodDeleter(Type *object, Destructor destructor) : Base(object)
+       MethodDeleter(Type *object) : Base(object)
        {
-               Base::fDelete = destructor;
        }
 };


--
To view, visit https://review.haiku-os.org/c/haiku/+/3456
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I85c4cb3635f01f13e529ca087324cc2fcb42cfc0
Gerrit-Change-Number: 3456
Gerrit-PatchSet: 1
Gerrit-Owner: X512 <danger_mail@xxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: AutoDeleter: move destructor function in MethodDeleter from construct... - Gerrit