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