History log of /haiku/headers/private/shared/AutoDeleter.h
Revision Date Author Comments
# 97dc7e3b 21-Mar-2024 Augustin Cavalier <waddlesplash@gmail.com>

AutoDeleter: Add assertion in SetTo that the object is not the one already set.

Otherwise we could cause leaks.

Most of the time this check should be optimized out,
as most uses of AutoDeleter don't invoke SetTo. But
it would have caught some bugs in the VFS refactors
(which wound up being cancelled out by later commits
anyway, but this would've exposed them.)

Just invoke debugger(), which calls the kernel
debugger when compiled in kernel mode. And define
debugger() inline in this header if OS.h is not
included to avoid namespace pollution.


# 058b29ac 09-Dec-2020 X512 <danger_mail@list.ru>

AutoDeleter: introduce MethodObjectDeleter

It allows to call destructor function stored in struct object such as
device_manager_info::put_node.

Change-Id: If9162f2f449d2b1c52c39509fa8732f21debf04a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3484
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# d1ca0fcc 09-Dec-2020 X512 <danger_mail@list.ru>

AutoDeleter: add IsSet method

Change-Id: I70eb43a288ec9c02471aa21ce5618f0fa2399bd7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3486
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 84b1893b 02-Jul-2020 X512 <danger_mail@list.ru>

AutoDeleter: introduce HandleDeleter

It allow to use arbitrary handle type, null value and destructor function.

Change-Id: I87c444cb7ef1b08d1dbed7fe4171700171d651d2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2977
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 76ab8567 04-Dec-2020 X512 <danger_mail@list.ru>

AutoDeleter: fix AutoDeleter size

C++ don't allow zero size class fields. If field with empty class field
is used, it's size will be 1 byte.

Create DeleteFunc instance as local variable at each use instead.

Fixes #16638.

Change-Id: Ifb76c45ea02e9fed014751542ee5f16f41e11d15
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3458
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# aecba913 04-Dec-2020 X512 <danger_mail@list.ru>

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 <pulkomandy@gmail.com>


# 7d775e79 04-Dec-2020 X512 <danger_mail@list.ru>

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

It allows to make typedef of pointer types and declaring pointers in headers.

Store of destructor function pointer in CObjectDeleter is no longer needed.

Change-Id: Ic629fd10b28b09f4190edf8ba6b911ca3108ab0e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3455
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 8301c498 07-Jun-2020 X512 <danger_mail@list.ru>

AutoDeleter: add operator [] for ArrayDeleter

Change-Id: I015951053050b58e73fd71e4abb104a0755416f7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2890
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# ec43e4f4 15-May-2020 X512 <danger_mail@list.ru>

AutoDeleter: do not allow copy

Change-Id: Ieab0fea46fc23c446bbaca407e3e80a4a7901896
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2704
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# b29db8eb 18-Apr-2020 X512 <danger_mail@list.ru>

AutoDeleter: add Get method for FileDescriptorCloser

This allows to use FileDescriptorCloser as unique pointer for file descriptor.

Change-Id: I4c768fafba6ed35658b2fdb075b9b547f53bc8da
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2495
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 18f5cd17 09-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Explicitly denote BPrivate to avoid clashes


# d046296e 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Improve FileDescriptorCloser

* Add SetTo()/Unset() methods and no-argument constructor.
* Detach() returns the FD now.


# 5b486787 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Improve FileDescriptorCloser

* Add SetTo()/Unset() methods and no-argument constructor.
* Detach() returns the FD now.


# cb7ce9a3 09-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Renamed DescriptorCloser to FileDescriptorCloser as suggested by Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d91215d3 09-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Added DescriptorCloser helper class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b97e1292 31-Jul-2010 Oliver Tappe <zooey@hirschkaefer.de>

* added operator-> for convenience

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37825 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fe00c1a5 28-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

AutoDeleter calls the destructor operator also when the object is NULL,
so we need to check for that explicitly in the CObjectDeleter and
MethodDeleter cases.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26673 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e378ab1c 19-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added MethodDeleter class, which calls a specified method on the object
when destroyed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25067 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 34cbfd39 13-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added CObjectDeleter class, which invokes a given destructor function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24963 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2851dbad 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Moved Referenceable.cpp to src/kits/support (private libbe API), and its header to
private/shared.
* Made AddReference() and CountReferences() inlines.
* The registrar is now using the private Referenceable version in libbe.so.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21767 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5519ed57 06-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added AutoDeleter::Get().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f277fb63 11-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Prevent double deletion when setting to an object that is already set.
* Added Unset() and Delete() methods.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce8cfdb8 28-Sep-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Classes for scope-based auto deletion.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4838 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 18f5cd171bc62a0bf90c48f3a07a8f6e2f8b2297 09-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Explicitly denote BPrivate to avoid clashes


# d046296e854527acbf177aad4478c64e5864fb1b 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Improve FileDescriptorCloser

* Add SetTo()/Unset() methods and no-argument constructor.
* Detach() returns the FD now.


# 5b486787aac2318368f6cd3eb624eebb28e9ed94 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Improve FileDescriptorCloser

* Add SetTo()/Unset() methods and no-argument constructor.
* Detach() returns the FD now.


# cb7ce9a32f228cd69fd910424a7f2b405e2e22e4 09-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Renamed DescriptorCloser to FileDescriptorCloser as suggested by Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d91215d3f1fe2b672062a1896aba55bb6ba4276c 09-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Added DescriptorCloser helper class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b97e12926cca706e70eb47adc18962853573c462 31-Jul-2010 Oliver Tappe <zooey@hirschkaefer.de>

* added operator-> for convenience

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37825 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fe00c1a5ea69f75147f5f5aff87cb0d5e56349cf 28-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

AutoDeleter calls the destructor operator also when the object is NULL,
so we need to check for that explicitly in the CObjectDeleter and
MethodDeleter cases.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26673 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e378ab1c094dd0ef8da406665ae60cc3ac03b2f0 19-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added MethodDeleter class, which calls a specified method on the object
when destroyed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25067 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 34cbfd39d3e0641a1fa046d58d1facefcb41aa50 13-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added CObjectDeleter class, which invokes a given destructor function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24963 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2851dbad53bd9d11b64ba4267c96f637d133f81c 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Moved Referenceable.cpp to src/kits/support (private libbe API), and its header to
private/shared.
* Made AddReference() and CountReferences() inlines.
* The registrar is now using the private Referenceable version in libbe.so.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21767 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5519ed578c03ed705a1953a820bd155ef5aac56d 06-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added AutoDeleter::Get().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f277fb639d41b247c93edec845641a5257290338 11-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Prevent double deletion when setting to an object that is already set.
* Added Unset() and Delete() methods.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce8cfdb8a6529c9cb7f78f87c81519a151e5c73e 28-Sep-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Classes for scope-based auto deletion.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4838 a95241bf-73f2-0310-859d-f6bbb57e9c96