aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-ref.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-02-09 13:16:36 -0700
committerTom Tromey <tom@tromey.com>2017-02-10 12:24:31 -0700
commit7780f18678aeb553778633aeb50f41694f55bf27 (patch)
tree2a29556dd1807649261d2a013393a279da421a5c /gdb/python/py-ref.h
parentd4b0bb186e204f77ed70bc719d16c6ca302094fd (diff)
downloadgdb-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.h13
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 */