TrinityCore
Memory.h
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#ifndef TRINITY_MEMORY_H
19
#define TRINITY_MEMORY_H
20
21
#include <memory>
22
23
namespace
Trinity
24
{
25
namespace
Impl
26
{
27
template
<
typename
T,
typename
Del>
28
struct
unique_ptr_deleter
29
{
30
using
pointer
= T*;
31
unique_ptr_deleter
(Del deleter) :
_deleter
(
std
::move(deleter)) { }
32
33
void
operator()
(
pointer
ptr)
const
{
_deleter
(ptr); }
34
35
private
:
36
Del
_deleter
;
37
};
38
}
39
40
template
<
typename
T,
typename
Del>
41
auto
make_unique_ptr_with_deleter
(T* ptr, Del&& deleter)
42
{
43
using
Deleter_t =
Impl::unique_ptr_deleter<T, Del>
;
44
45
return
std::unique_ptr<T, Deleter_t>(ptr, Deleter_t(std::forward<Del>(deleter)));
46
}
47
}
48
49
#endif
// TRINITY_MEMORY_H
Trinity
Definition:
AsioHacksFwd.h:58
Trinity::make_unique_ptr_with_deleter
auto make_unique_ptr_with_deleter(T *ptr, Del &&deleter)
Definition:
Memory.h:41
std
STL namespace.
Trinity::Impl::unique_ptr_deleter
Definition:
Memory.h:29
Trinity::Impl::unique_ptr_deleter::operator()
void operator()(pointer ptr) const
Definition:
Memory.h:33
Trinity::Impl::unique_ptr_deleter::pointer
T * pointer
Definition:
Memory.h:30
Trinity::Impl::unique_ptr_deleter::_deleter
Del _deleter
Definition:
Memory.h:36
Trinity::Impl::unique_ptr_deleter::unique_ptr_deleter
unique_ptr_deleter(Del deleter)
Definition:
Memory.h:31
common
Utilities
Memory.h
Generated on Tue Sep 17 2024 20:04:41 for TrinityCore by
1.9.4