Commit | Line | Data |
---|---|---|
a68ff33e TT |
1 | /* Python reference-holding class |
2 | ||
3 | Copyright (C) 2016 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_PYTHON_REF_H | |
21 | #define GDB_PYTHON_REF_H | |
22 | ||
50315b21 | 23 | #include "common/gdb_ref_ptr.h" |
a68ff33e | 24 | |
50315b21 TT |
25 | /* A policy class for gdb::ref_ptr for Python reference counting. */ |
26 | struct gdbpy_ref_policy | |
a68ff33e | 27 | { |
50315b21 | 28 | static void incref (PyObject *ptr) |
a68ff33e | 29 | { |
50315b21 | 30 | Py_INCREF (ptr); |
a68ff33e TT |
31 | } |
32 | ||
50315b21 | 33 | static void decref (PyObject *ptr) |
a68ff33e | 34 | { |
50315b21 | 35 | Py_DECREF (ptr); |
a68ff33e | 36 | } |
a68ff33e TT |
37 | }; |
38 | ||
50315b21 TT |
39 | /* A gdb::ref_ptr that has been specialized for Python objects. */ |
40 | typedef gdb::ref_ptr<PyObject, gdbpy_ref_policy> gdbpy_ref; | |
a68ff33e TT |
41 | |
42 | #endif /* GDB_PYTHON_REF_H */ |