GDBserver
common
gdb_unique_ptr.h
Go to the documentation of this file.
1
/* std::unique_ptr specializations for GDB.
2
3
Copyright (C) 2016-2018 Free Software Foundation, Inc.
4
5
This file is part of GDB.
6
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 3 of the License, or
10
(at your option) any later version.
11
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20
#ifndef GDB_UNIQUE_PTR_H
21
#define GDB_UNIQUE_PTR_H 1
22
23
#include <memory>
24
25
namespace
gdb
26
{
27
/* Define gdb::unique_xmalloc_ptr, a std::unique_ptr that manages
28
xmalloc'ed memory. */
29
30
/* The deleter for std::unique_xmalloc_ptr. Uses xfree. */
31
template
<
typename
T>
32
struct
xfree_deleter
33
{
34
void
operator()
(T *ptr)
const
{
xfree
(ptr); }
35
};
36
37
/* Same, for arrays. */
38
template
<
typename
T>
39
struct
xfree_deleter
<T[]>
40
{
41
void
operator()
(T *ptr)
const
{
xfree
(ptr); }
42
};
43
44
/* Import the standard unique_ptr to our namespace with a custom
45
deleter. */
46
47
template
<
typename
T>
using
unique_xmalloc_ptr
48
= std::unique_ptr<T, xfree_deleter<T>>;
49
50
}
/* namespace gdb */
51
52
#endif
/* GDB_UNIQUE_PTR_H */
xfree
static void xfree(T *ptr)
Definition:
common-utils.h:54
gdb::xfree_deleter
Definition:
gdb_unique_ptr.h:32
gdb::xfree_deleter::operator()
void operator()(T *ptr) const
Definition:
gdb_unique_ptr.h:34
gdb::unique_xmalloc_ptr
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
Definition:
gdb_unique_ptr.h:48
gdb
Definition:
array-view.h:66
Generated by
1.8.14