diff options
author | Doug Evans <dje@google.com> | 2014-10-13 12:24:54 -0700 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2014-10-13 12:24:54 -0700 |
commit | 4e1bbde013bae26b550a047baa8c6b999d811f23 (patch) | |
tree | 70c101860d545587972bda7864b9e7ff0c53c1f1 | |
parent | 5b69e3572d1ee8e8e6e1991fd07f87a96c48746d (diff) | |
download | gdb-4e1bbde013bae26b550a047baa8c6b999d811f23.zip gdb-4e1bbde013bae26b550a047baa8c6b999d811f23.tar.gz gdb-4e1bbde013bae26b550a047baa8c6b999d811f23.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/python/py-objfile.c | 82 | ||||
-rw-r--r-- | gdb/python/py-progspace.c | 81 |
3 files changed, 70 insertions, 100 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 97bc9bd..6b7f6d3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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> Jan Kratochvil <jan.kratochvil@redhat.com> diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c index 5d00d62..df29691 100644 --- a/gdb/python/py-objfile.c +++ b/gdb/python/py-objfile.c @@ -74,6 +74,33 @@ objfpy_dealloc (PyObject *o) 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 * objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) { @@ -81,36 +108,13 @@ objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) if (self) { - self->objfile = NULL; - - 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) + if (!objfpy_initialize (self)) { Py_DECREF (self); return NULL; } } + return (PyObject *) self; } @@ -280,6 +284,7 @@ py_free_objfile (struct objfile *objfile, void *datum) representing OBJFILE. If the object has already been created, return it. Otherwise, create it. Return NULL and set the Python error on failure. */ + PyObject * 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); if (object) { - 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) + if (!objfpy_initialize (object)) { Py_DECREF (object); return NULL; } + object->objfile = objfile; set_objfile_data (objfile, objfpy_objfile_data_key, object); } } diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c index b0092c5..4280032 100644 --- a/gdb/python/py-progspace.c +++ b/gdb/python/py-progspace.c @@ -82,6 +82,33 @@ pspy_dealloc (PyObject *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 * pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) { @@ -89,36 +116,13 @@ pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) if (self) { - self->pspace = NULL; - - 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) + if (!pspy_initialize (self)) { Py_DECREF (self); return NULL; } } + return (PyObject *) self; } @@ -296,36 +300,13 @@ pspace_to_pspace_object (struct program_space *pspace) object = PyObject_New (pspace_object, &pspace_object_type); if (object) { - 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) + if (!pspy_initialize (object)) { Py_DECREF (object); return NULL; } + object->pspace = pspace; set_program_space_data (pspace, pspy_pspace_data_key, object); } } |