diff options
author | Tom Tromey <tom@tromey.com> | 2017-02-09 13:16:36 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-02-10 12:24:31 -0700 |
commit | 7780f18678aeb553778633aeb50f41694f55bf27 (patch) | |
tree | 2a29556dd1807649261d2a013393a279da421a5c /gdb/python/py-ref.h | |
parent | d4b0bb186e204f77ed70bc719d16c6ca302094fd (diff) | |
download | gdb-7780f18678aeb553778633aeb50f41694f55bf27.zip gdb-7780f18678aeb553778633aeb50f41694f55bf27.tar.gz gdb-7780f18678aeb553778633aeb50f41694f55bf27.tar.bz2 |
Turn gdbpy_ref into a template
This turns gdbpy_ref into a template class, so that it can be used to
wrap subclasses of PyObject. The default argument remains PyObject;
and this necessitated renaming uses of "gdbpy_ref" to "gdbpy_ref<>".
gdb/ChangeLog
2017-02-10 Tom Tromey <tom@tromey.com>
* python/py-ref.h (gdbpy_ref_policy): Now a template.
(gdbpy_ref): Now a template; allow subclasses of PyObject to be
used.
* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
python/py-exitedevent.c, python/py-finishbreakpoint.c,
python/py-framefilter.c, python/py-function.c,
python/py-inferior.c, python/py-infevents.c,
python/py-linetable.c, python/py-newobjfileevent.c,
python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
python/py-signalevent.c, python/py-stopevent.c,
python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
python/py-unwind.c, python/py-utils.c, python/py-value.c,
python/py-varobj.c, python/py-xmethods.c, python/python.c,
varobj.c: Change gdbpy_ref to gdbpy_ref<>.
Diffstat (limited to 'gdb/python/py-ref.h')
-rw-r--r-- | gdb/python/py-ref.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gdb/python/py-ref.h b/gdb/python/py-ref.h index b2479bf..8568e5c 100644 --- a/gdb/python/py-ref.h +++ b/gdb/python/py-ref.h @@ -1,6 +1,6 @@ /* Python reference-holding class - Copyright (C) 2016 Free Software Foundation, Inc. + Copyright (C) 2016-2017 Free Software Foundation, Inc. This file is part of GDB. @@ -23,20 +23,23 @@ #include "common/gdb_ref_ptr.h" /* A policy class for gdb::ref_ptr for Python reference counting. */ +template<typename T> struct gdbpy_ref_policy { - static void incref (PyObject *ptr) + static void incref (T *ptr) { Py_INCREF (ptr); } - static void decref (PyObject *ptr) + static void decref (T *ptr) { Py_DECREF (ptr); } }; -/* A gdb::ref_ptr that has been specialized for Python objects. */ -typedef gdb::ref_ptr<PyObject, gdbpy_ref_policy> gdbpy_ref; +/* A gdb::ref_ptr that has been specialized for Python objects or + their "subclasses". */ +template<typename T = PyObject> using gdbpy_ref + = gdb::ref_ptr<T, gdbpy_ref_policy<T>>; #endif /* GDB_PYTHON_REF_H */ |