Remove some code duplication in py-objfile.c, py-progspace.c.
authorDoug Evans <dje@google.com>
Mon, 13 Oct 2014 19:24:54 +0000 (12:24 -0700)
committerDoug Evans <dje@google.com>
Mon, 13 Oct 2014 19:24:54 +0000 (12:24 -0700)
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.

gdb/ChangeLog
gdb/python/py-objfile.c
gdb/python/py-progspace.c

index 97bc9bd..6b7f6d3 100644 (file)
@@ -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>
 
index 5d00d62..df29691 100644 (file)
@@ -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);
        }
     }
index b0092c5..4280032 100644 (file)
@@ -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);
        }
     }