/* Python interface to lazy strings.
- Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
This file is part of GDB.
#include "valprint.h"
#include "language.h"
-typedef struct {
+struct lazy_string_object {
PyObject_HEAD
/* Holds the address of the lazy string. */
This is recorded as a PyObject so that we take advantage of support for
preserving the type should its owning objfile go away. */
PyObject *type;
-} lazy_string_object;
+};
extern PyTypeObject lazy_string_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("lazy_string_object");
{
lazy_string_object *self_string = (lazy_string_object *) self;
- return gdb_py_long_from_ulongest (self_string->address);
+ return gdb_py_object_from_ulongest (self_string->address).release ();
}
static PyObject *
{
lazy_string_object *self_string = (lazy_string_object *) self;
- return PyLong_FromLong (self_string->length);
+ return gdb_py_object_from_longest (self_string->length).release ();
}
static PyObject *
return NULL;
}
- TRY
+ try
{
struct type *type = type_object_to_type (self_string->type);
struct type *realtype;
gdb_assert (type != NULL);
realtype = check_typedef (type);
- switch (TYPE_CODE (realtype))
+ switch (realtype->code ())
{
case TYPE_CODE_PTR:
/* If a length is specified we need to convert this to an array
break;
}
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return value_to_value_object (val);
}
lazy_string_object *self_string = (lazy_string_object *) self;
xfree (self_string->encoding);
+ Py_TYPE (self)->tp_free (self);
}
/* Low level routine to create a <gdb.LazyString> object.
}
realtype = check_typedef (type);
- switch (TYPE_CODE (realtype))
+ switch (realtype->code ())
{
case TYPE_CODE_ARRAY:
{
gdb_assert (type != NULL);
realtype = check_typedef (type);
- switch (TYPE_CODE (realtype))
+ switch (realtype->code ())
{
case TYPE_CODE_PTR:
case TYPE_CODE_ARRAY:
};
-static PyGetSetDef lazy_string_object_getset[] = {
+static gdb_PyGetSetDef lazy_string_object_getset[] = {
{ "address", stpy_get_address, NULL, "Address of the string.", NULL },
{ "encoding", stpy_get_encoding, NULL, "Encoding of the string.", NULL },
{ "length", stpy_get_length, NULL, "Length of the string.", NULL },