/* Python interface to inferior thread event registries.
- Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2009-2019 Free Software Foundation, Inc.
This file is part of GDB.
events_object gdb_py_events;
-static PyTypeObject eventregistry_object_type;
+extern PyTypeObject eventregistry_object_type
+ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("eventregistry_object");
/* Implementation of EventRegistry.connect () -> NULL.
Add FUNCTION to the list of listeners. */
eventregistry_object *
create_eventregistry_object (void)
{
- eventregistry_object *eventregistry_obj;
+ gdbpy_ref<eventregistry_object>
+ eventregistry_obj (PyObject_New (eventregistry_object,
+ &eventregistry_object_type));
- eventregistry_obj = PyObject_New (eventregistry_object,
- &eventregistry_object_type);
-
- if (!eventregistry_obj)
+ if (eventregistry_obj == NULL)
return NULL;
eventregistry_obj->callbacks = PyList_New (0);
if (!eventregistry_obj->callbacks)
return NULL;
- return eventregistry_obj;
+ return eventregistry_obj.release ();
}
static void
evregpy_dealloc (PyObject *self)
{
Py_XDECREF (((eventregistry_object *) self)->callbacks);
- self->ob_type->tp_free (self);
+ Py_TYPE (self)->tp_free (self);
}
/* Initialize the Python event registry code. */
-void
+int
gdbpy_initialize_eventregistry (void)
{
if (PyType_Ready (&eventregistry_object_type) < 0)
- return;
+ return -1;
- Py_INCREF (&eventregistry_object_type);
- PyModule_AddObject (gdb_module, "EventRegistry",
- (PyObject *) &eventregistry_object_type);
+ return gdb_pymodule_addobject (gdb_module, "EventRegistry",
+ (PyObject *) &eventregistry_object_type);
}
-/* Retern the number of listeners currently connected to this
+/* Return the number of listeners currently connected to this
registry. */
int
{ NULL } /* Sentinel. */
};
-static PyTypeObject eventregistry_object_type =
+PyTypeObject eventregistry_object_type =
{
- PyObject_HEAD_INIT (NULL)
- 0, /* ob_size */
+ PyVarObject_HEAD_INIT (NULL, 0)
"gdb.EventRegistry", /* tp_name */
sizeof (eventregistry_object), /* tp_basicsize */
0, /* tp_itemsize */