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<>.
This commit is contained in:
Tom Tromey 2017-02-09 13:16:36 -07:00
parent d4b0bb186e
commit 7780f18678
30 changed files with 260 additions and 234 deletions

View file

@ -307,7 +307,7 @@ get_doc_string (PyObject *object, PyObject *attr)
if (PyObject_HasAttr (object, attr))
{
gdbpy_ref ds_obj (PyObject_GetAttr (object, attr));
gdbpy_ref<> ds_obj (PyObject_GetAttr (object, attr));
if (ds_obj != NULL && gdbpy_is_string (ds_obj.get ()))
{
@ -329,7 +329,7 @@ static gdb::unique_xmalloc_ptr<char>
call_doc_function (PyObject *obj, PyObject *method, PyObject *arg)
{
gdb::unique_xmalloc_ptr<char> data;
gdbpy_ref result (PyObject_CallMethodObjArgs (obj, method, arg, NULL));
gdbpy_ref<> result (PyObject_CallMethodObjArgs (obj, method, arg, NULL));
if (result == NULL)
return NULL;
@ -364,7 +364,7 @@ get_set_value (char *args, int from_tty,
gdb::unique_xmalloc_ptr<char> set_doc_string;
gdbpy_enter enter_py (get_current_arch (), current_language);
gdbpy_ref set_doc_func (PyString_FromString ("get_set_string"));
gdbpy_ref<> set_doc_func (PyString_FromString ("get_set_string"));
if (set_doc_func == NULL)
{
@ -407,7 +407,7 @@ get_show_value (struct ui_file *file, int from_tty,
gdb::unique_xmalloc_ptr<char> show_doc_string;
gdbpy_enter enter_py (get_current_arch (), current_language);
gdbpy_ref show_doc_func (PyString_FromString ("get_show_string"));
gdbpy_ref<> show_doc_func (PyString_FromString ("get_show_string"));
if (show_doc_func == NULL)
{
@ -417,7 +417,7 @@ get_show_value (struct ui_file *file, int from_tty,
if (PyObject_HasAttr (obj, show_doc_func.get ()))
{
gdbpy_ref val_obj (PyString_FromString (value));
gdbpy_ref<> val_obj (PyString_FromString (value));
if (val_obj == NULL)
{
@ -586,7 +586,7 @@ compute_enum_values (parmpy_object *self, PyObject *enum_values)
for (i = 0; i < size; ++i)
{
gdbpy_ref item (PySequence_GetItem (enum_values, i));
gdbpy_ref<> item (PySequence_GetItem (enum_values, i));
if (item == NULL)
{