Remove some code duplication in py-objfile.c, py-progspace.c.
gdb/ChangeLog: * py-objfile.c (objfpy_initialize): New function. (objfpy_new, objfile_to_objfile_object): Call it. * py-progspace.c (pspy_initialize): New function. (pspy_new, pspace_to_pspace_object): Call it.
This commit is contained in:
parent
5b69e3572d
commit
4e1bbde013
@ -1,3 +1,10 @@
|
|||||||
|
2014-10-13 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
* py-objfile.c (objfpy_initialize): New function.
|
||||||
|
(objfpy_new, objfile_to_objfile_object): Call it.
|
||||||
|
* py-progspace.c (pspy_initialize): New function.
|
||||||
|
(pspy_new, pspace_to_pspace_object): Call it.
|
||||||
|
|
||||||
2014-10-13 Miroslav Franc <mfranc@redhat.com>
|
2014-10-13 Miroslav Franc <mfranc@redhat.com>
|
||||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
@ -74,6 +74,33 @@ objfpy_dealloc (PyObject *o)
|
|||||||
Py_TYPE (self)->tp_free (self);
|
Py_TYPE (self)->tp_free (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize an objfile_object.
|
||||||
|
The result is a boolean indicating success. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
objfpy_initialize (objfile_object *self)
|
||||||
|
{
|
||||||
|
self->objfile = NULL;
|
||||||
|
|
||||||
|
self->printers = PyList_New (0);
|
||||||
|
if (self->printers == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->frame_filters = PyDict_New ();
|
||||||
|
if (self->frame_filters == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->type_printers = PyList_New (0);
|
||||||
|
if (self->type_printers == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->xmethods = PyList_New (0);
|
||||||
|
if (self->xmethods == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
||||||
{
|
{
|
||||||
@ -81,36 +108,13 @@ objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
|||||||
|
|
||||||
if (self)
|
if (self)
|
||||||
{
|
{
|
||||||
self->objfile = NULL;
|
if (!objfpy_initialize (self))
|
||||||
|
|
||||||
self->printers = PyList_New (0);
|
|
||||||
if (!self->printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->frame_filters = PyDict_New ();
|
|
||||||
if (!self->frame_filters)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->type_printers = PyList_New (0);
|
|
||||||
if (!self->type_printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->xmethods = PyList_New (0);
|
|
||||||
if (self->xmethods == NULL)
|
|
||||||
{
|
{
|
||||||
Py_DECREF (self);
|
Py_DECREF (self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (PyObject *) self;
|
return (PyObject *) self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,6 +284,7 @@ py_free_objfile (struct objfile *objfile, void *datum)
|
|||||||
representing OBJFILE. If the object has already been created,
|
representing OBJFILE. If the object has already been created,
|
||||||
return it. Otherwise, create it. Return NULL and set the Python
|
return it. Otherwise, create it. Return NULL and set the Python
|
||||||
error on failure. */
|
error on failure. */
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
objfile_to_objfile_object (struct objfile *objfile)
|
objfile_to_objfile_object (struct objfile *objfile)
|
||||||
{
|
{
|
||||||
@ -291,36 +296,13 @@ objfile_to_objfile_object (struct objfile *objfile)
|
|||||||
object = PyObject_New (objfile_object, &objfile_object_type);
|
object = PyObject_New (objfile_object, &objfile_object_type);
|
||||||
if (object)
|
if (object)
|
||||||
{
|
{
|
||||||
|
if (!objfpy_initialize (object))
|
||||||
|
{
|
||||||
|
Py_DECREF (object);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
object->objfile = objfile;
|
object->objfile = objfile;
|
||||||
|
|
||||||
object->printers = PyList_New (0);
|
|
||||||
if (!object->printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->frame_filters = PyDict_New ();
|
|
||||||
if (!object->frame_filters)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->type_printers = PyList_New (0);
|
|
||||||
if (!object->type_printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->xmethods = PyList_New (0);
|
|
||||||
if (object->xmethods == NULL)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_objfile_data (objfile, objfpy_objfile_data_key, object);
|
set_objfile_data (objfile, objfpy_objfile_data_key, object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,33 @@ pspy_dealloc (PyObject *self)
|
|||||||
Py_TYPE (self)->tp_free (self);
|
Py_TYPE (self)->tp_free (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize a pspace_object.
|
||||||
|
The result is a boolean indicating success. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
pspy_initialize (pspace_object *self)
|
||||||
|
{
|
||||||
|
self->pspace = NULL;
|
||||||
|
|
||||||
|
self->printers = PyList_New (0);
|
||||||
|
if (self->printers == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->frame_filters = PyDict_New ();
|
||||||
|
if (self->frame_filters == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->type_printers = PyList_New (0);
|
||||||
|
if (self->type_printers == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
self->xmethods = PyList_New (0);
|
||||||
|
if (self->xmethods == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
||||||
{
|
{
|
||||||
@ -89,36 +116,13 @@ pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
|
|||||||
|
|
||||||
if (self)
|
if (self)
|
||||||
{
|
{
|
||||||
self->pspace = NULL;
|
if (!pspy_initialize (self))
|
||||||
|
|
||||||
self->printers = PyList_New (0);
|
|
||||||
if (!self->printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->frame_filters = PyDict_New ();
|
|
||||||
if (!self->frame_filters)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->type_printers = PyList_New (0);
|
|
||||||
if (!self->type_printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (self);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->xmethods = PyList_New (0);
|
|
||||||
if (self->xmethods == NULL)
|
|
||||||
{
|
{
|
||||||
Py_DECREF (self);
|
Py_DECREF (self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (PyObject *) self;
|
return (PyObject *) self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,36 +300,13 @@ pspace_to_pspace_object (struct program_space *pspace)
|
|||||||
object = PyObject_New (pspace_object, &pspace_object_type);
|
object = PyObject_New (pspace_object, &pspace_object_type);
|
||||||
if (object)
|
if (object)
|
||||||
{
|
{
|
||||||
|
if (!pspy_initialize (object))
|
||||||
|
{
|
||||||
|
Py_DECREF (object);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
object->pspace = pspace;
|
object->pspace = pspace;
|
||||||
|
|
||||||
object->printers = PyList_New (0);
|
|
||||||
if (!object->printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->frame_filters = PyDict_New ();
|
|
||||||
if (!object->frame_filters)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->type_printers = PyList_New (0);
|
|
||||||
if (!object->type_printers)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
object->xmethods = PyList_New (0);
|
|
||||||
if (object->xmethods == NULL)
|
|
||||||
{
|
|
||||||
Py_DECREF (object);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_program_space_data (pspace, pspy_pspace_data_key, object);
|
set_program_space_data (pspace, pspy_pspace_data_key, object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user