Add ability to add attributes to gdb.Objfile and gdb.Progspace objects.
gdb/ChangeLog: * NEWS: Mention ability add attributes to gdb.Objfile and gdb.Progspace objects. * python/py-objfile.c (objfile_object): New member dict. (objfpy_dealloc): Py_XDECREF dict. (objfpy_initialize): Initialize dict. (objfile_getset): Add __dict__. (objfile_object_type): Set tp_dictoffset member. * python/py-progspace.c (progspace_object): New member dict. (pspy_dealloc): Py_XDECREF dict. (pspy_initialize): Initialize dict. (pspace_getset): Add __dict__. (pspace_object_type): Set tp_dictoffset member. gdb/doc/ChangeLog: * python.texi (Progspaces In Python): Document ability to add random attributes to gdb.Progspace objects. (Objfiles In Python): Document ability to add random attributes to gdb.objfile objects. gdb/testsuite/ChangeLog: * gdb.python/py-objfile.exp: Add tests for setting random attributes in objfiles. * gdb.python/py-progspace.exp: Add tests for setting random attributes in progspaces.
This commit is contained in:
parent
c21c8bde37
commit
02be9a7100
9 changed files with 130 additions and 3 deletions
|
@ -32,6 +32,10 @@ typedef struct
|
|||
/* The corresponding pspace. */
|
||||
struct program_space *pspace;
|
||||
|
||||
/* Dictionary holding user-added attributes.
|
||||
This is the __dict__ attribute of the object. */
|
||||
PyObject *dict;
|
||||
|
||||
/* The pretty-printer list of functions. */
|
||||
PyObject *printers;
|
||||
|
||||
|
@ -75,6 +79,7 @@ pspy_dealloc (PyObject *self)
|
|||
{
|
||||
pspace_object *ps_self = (pspace_object *) self;
|
||||
|
||||
Py_XDECREF (ps_self->dict);
|
||||
Py_XDECREF (ps_self->printers);
|
||||
Py_XDECREF (ps_self->frame_filters);
|
||||
Py_XDECREF (ps_self->type_printers);
|
||||
|
@ -89,6 +94,7 @@ static int
|
|||
pspy_initialize (pspace_object *self)
|
||||
{
|
||||
self->pspace = NULL;
|
||||
self->dict = NULL;
|
||||
|
||||
self->printers = PyList_New (0);
|
||||
if (self->printers == NULL)
|
||||
|
@ -331,6 +337,8 @@ gdbpy_initialize_pspace (void)
|
|||
|
||||
static PyGetSetDef pspace_getset[] =
|
||||
{
|
||||
{ "__dict__", gdb_py_generic_dict, NULL,
|
||||
"The __dict__ for this progspace.", &pspace_object_type },
|
||||
{ "filename", pspy_get_filename, NULL,
|
||||
"The progspace's main filename, or None.", NULL },
|
||||
{ "pretty_printers", pspy_get_printers, pspy_set_printers,
|
||||
|
@ -380,7 +388,7 @@ static PyTypeObject pspace_object_type =
|
|||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
offsetof (pspace_object, dict), /* tp_dictoffset */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
pspy_new, /* tp_new */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue