]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/python/py-evts.c
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / gdb / python / py-evts.c
index 93790c0e6bf0278630e36bca55aa9f027c9e8711..76d67efb07ef1348c7b5a9f1c4ea8d32330bf14e 100644 (file)
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include "defs.h"
 #include "py-events.h"
 
+#ifdef IS_PY3K
+static struct PyModuleDef EventModuleDef =
+{
+  PyModuleDef_HEAD_INIT,
+  "gdb.events",
+  NULL,
+  -1,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL
+};
+#endif
+
 /* Initialize python events.  */
 
-static int
-add_new_registry (eventregistry_object **registryp, char *name)
+static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
+add_new_registry (eventregistry_object **registryp, const char *name)
 {
   *registryp = create_eventregistry_object ();
 
   if (*registryp == NULL)
-    goto fail;
-
-  if (PyModule_AddObject (gdb_py_events.module,
-                             name,
-                             (PyObject *)(*registryp)) < 0)
-    goto fail;
-
-  return 0;
+    return -1;
 
-  fail:
-   Py_XDECREF (*registryp);
-   return -1;
+  return gdb_pymodule_addobject (gdb_py_events.module,
+                                name,
+                                (PyObject *)(*registryp));
 }
 
-void
+int
 gdbpy_initialize_py_events (void)
 {
+#ifdef IS_PY3K
+  gdb_py_events.module = PyModule_Create (&EventModuleDef);
+#else
   gdb_py_events.module = Py_InitModule ("events", NULL);
+#endif
 
   if (!gdb_py_events.module)
-    goto fail;
+    return -1;
 
-  if (add_new_registry (&gdb_py_events.stop, "stop") < 0)
-    goto fail;
+#define GDB_PY_DEFINE_EVENT(name)                              \
+  if (add_new_registry (&gdb_py_events.name, #name) < 0)       \
+    return -1;
+#include "py-all-events.def"
+#undef GDB_PY_DEFINE_EVENT
 
-  if (add_new_registry (&gdb_py_events.cont, "cont") < 0)
-    goto fail;
+  if (gdb_pymodule_addobject (gdb_module,
+                             "events",
+                             (PyObject *) gdb_py_events.module) < 0)
+    return -1;
 
-  if (add_new_registry (&gdb_py_events.exited, "exited") < 0)
-    goto fail;
-
-  if (add_new_registry (&gdb_py_events.new_objfile, "new_objfile") < 0)
-    goto fail;
-
-  Py_INCREF (gdb_py_events.module);
-  if (PyModule_AddObject (gdb_module,
-                          "events",
-                          (PyObject *) gdb_py_events.module) < 0)
-    goto fail;
-
-  return;
-
-  fail:
-   gdbpy_print_stack ();
+  return 0;
 }