SlHelpers
Toggle main menu visibility
Loading...
Searching...
No Matches
Unique.h
1
// SPDX-License-Identifier: GPL-2.0-only
2
3
#pragma once
4
5
#include <memory>
6
7
namespace
SlHelpers {
8
14
template
<
typename
T>
15
class
Deleter {
16
public
:
17
Deleter() =
delete
;
18
23
Deleter
(
bool
free) : m_free(free) {}
24
29
void
operator()
(T *ptr)
const
;
30
32
using
Unique
= std::unique_ptr<T, Deleter<T>>;
33
private
:
34
bool
m_free;
35
};
36
40
template
<
typename
T>
41
struct
UniqueHolder
:
public
Deleter
<T>::Unique {
43
UniqueHolder
() :
UniqueHolder
(nullptr) { }
44
50
UniqueHolder
(T *ptr,
bool
free =
true
) :
Deleter
<T>::Unique(ptr,
Deleter
<T>{free}) {}
51
56
operator
T *()
const
{
return
Deleter<T>::Unique::get
(); }
57
};
58
59
}
SlHelpers::Deleter
The Deleter for UniqueHolder types.
Definition
Unique.h:15
SlHelpers::Deleter::operator()
void operator()(T *ptr) const
The operator called to free the pointer ptr.
SlHelpers::Deleter::Unique
std::unique_ptr< T, Deleter< T > > Unique
Deleter and UniqueHolder are just wrappers around std::unique_ptr.
Definition
Unique.h:32
SlHelpers::Deleter::Deleter
Deleter(bool free)
Construct a Deleter.
Definition
Unique.h:23
SlHelpers::UniqueHolder::UniqueHolder
UniqueHolder()
Construct UniqueHolder holding a nullptr.
Definition
Unique.h:43
SlHelpers::UniqueHolder::UniqueHolder
UniqueHolder(T *ptr, bool free=true)
Construct UniqueHolder holding ptr.
Definition
Unique.h:50
include
helpers
Unique.h
Generated by
1.17.0