GDB (xrefs)
Classes | Macros | Typedefs | Functions | Variables
py-type.c File Reference
#include "defs.h"
#include "value.h"
#include "python-internal.h"
#include "charset.h"
#include "gdbtypes.h"
#include "cp-support.h"
#include "demangle.h"
#include "objfiles.h"
#include "language.h"
#include "vec.h"
#include "typeprint.h"
#include "py-ref.h"

Go to the source code of this file.

Classes

struct  pyty_type_object
 
struct  pyty_field_object
 
struct  typy_iterator_object
 
struct  pyty_code
 

Macros

#define ENTRY(X)   { X, #X }
 

Typedefs

typedef struct pyty_type_object type_object
 
typedef struct pyty_field_object field_object
 

Functions

PyTypeObject type_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("type_object")
 
PyTypeObject field_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("field_object")
 
PyTypeObject type_iterator_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("typy_iterator_object")
 
static PyObject * typy_make_iter (PyObject *self, enum gdbpy_iter_kind kind)
 
static void field_dealloc (PyObject *obj)
 
static PyObject * field_new (void)
 
int gdbpy_is_field (PyObject *obj)
 
static PyObject * typy_get_code (PyObject *self, void *closure)
 
static PyObject * convert_field (struct type *type, int field)
 
static PyObject * field_name (struct type *type, int field)
 
static PyObject * make_fielditem (struct type *type, int i, enum gdbpy_iter_kind kind)
 
static PyObject * typy_fields_items (PyObject *self, enum gdbpy_iter_kind kind)
 
static PyObject * typy_values (PyObject *self, PyObject *args)
 
static PyObject * typy_fields (PyObject *self, PyObject *args)
 
static PyObject * typy_field_names (PyObject *self, PyObject *args)
 
static PyObject * typy_items (PyObject *self, PyObject *args)
 
static PyObject * typy_get_name (PyObject *self, void *closure)
 
static PyObject * typy_get_tag (PyObject *self, void *closure)
 
static PyObject * typy_strip_typedefs (PyObject *self, PyObject *args)
 
static struct typetypy_get_composite (struct type *type)
 
static PyObject * typy_array_1 (PyObject *self, PyObject *args, int is_vector)
 
static PyObject * typy_array (PyObject *self, PyObject *args)
 
static PyObject * typy_vector (PyObject *self, PyObject *args)
 
static PyObject * typy_pointer (PyObject *self, PyObject *args)
 
static PyObject * typy_range (PyObject *self, PyObject *args)
 
static PyObject * typy_reference (PyObject *self, PyObject *args)
 
static PyObject * typy_target (PyObject *self, PyObject *args)
 
static PyObject * typy_const (PyObject *self, PyObject *args)
 
static PyObject * typy_volatile (PyObject *self, PyObject *args)
 
static PyObject * typy_unqualified (PyObject *self, PyObject *args)
 
static PyObject * typy_get_sizeof (PyObject *self, void *closure)
 
static struct typetypy_lookup_typename (const char *type_name, const struct block *block)
 
static struct typetypy_lookup_type (struct demangle_component *demangled, const struct block *block)
 
static PyObject * typy_legacy_template_argument (struct type *type, const struct block *block, int argno)
 
static PyObject * typy_template_argument (PyObject *self, PyObject *args)
 
static PyObject * typy_str (PyObject *self)
 
static PyObject * typy_richcompare (PyObject *self, PyObject *other, int op)
 
static void save_objfile_types (struct objfile *objfile, void *datum)
 
static void set_type (type_object *obj, struct type *type)
 
static void typy_dealloc (PyObject *obj)
 
static Py_ssize_t typy_length (PyObject *self)
 
static int typy_nonzero (PyObject *self)
 
static PyObject * typy_optimized_out (PyObject *self, PyObject *args)
 
static PyObject * typy_getitem (PyObject *self, PyObject *key)
 
static PyObject * typy_get (PyObject *self, PyObject *args)
 
static PyObject * typy_has_key (PyObject *self, PyObject *args)
 
static PyObject * typy_iteritems (PyObject *self, PyObject *args)
 
static PyObject * typy_iterkeys (PyObject *self, PyObject *args)
 
static PyObject * typy_iter (PyObject *self)
 
static PyObject * typy_itervalues (PyObject *self, PyObject *args)
 
static PyObject * typy_iterator_iter (PyObject *self)
 
static PyObject * typy_iterator_iternext (PyObject *self)
 
static void typy_iterator_dealloc (PyObject *obj)
 
PyObject * type_to_type_object (struct type *type)
 
struct typetype_object_to_type (PyObject *obj)
 
PyObject * gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw)
 
int gdbpy_initialize_types (void)
 

Variables

static struct pyty_code pyty_codes []
 
static const struct objfile_data * typy_objfile_data_key
 
static gdb_PyGetSetDef type_object_getset []
 
static PyMethodDef type_object_methods []
 
static PyNumberMethods type_object_as_number
 
static PyMappingMethods typy_mapping
 
PyTypeObject type_object_type
 
static gdb_PyGetSetDef field_object_getset []
 
PyTypeObject field_object_type
 
PyTypeObject type_iterator_object_type
 

Macro Definition Documentation

◆ ENTRY

#define ENTRY (   X)    { X, #X }

Definition at line 86 of file py-type.c.

Typedef Documentation

◆ field_object

◆ type_object

typedef struct pyty_type_object type_object

Function Documentation

◆ convert_field()

static PyObject* convert_field ( struct type type,
int  field 
)
static

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [1/3]

PyTypeObject type_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "type_object"  )

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [2/3]

PyTypeObject field_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "field_object"  )

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [3/3]

PyTypeObject type_iterator_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "typy_iterator_object"  )

◆ field_dealloc()

static void field_dealloc ( PyObject *  obj)
static

Definition at line 123 of file py-type.c.

References pyty_field_object::dict, and Py_TYPE.

◆ field_name()

static PyObject* field_name ( struct type type,
int  field 
)
static

◆ field_new()

static PyObject* field_new ( void  )
static

Definition at line 132 of file py-type.c.

References field_object_type, and gdb::ref_ptr< T, Policy >::release().

Referenced by convert_field().

◆ gdbpy_initialize_types()

int gdbpy_initialize_types ( void  )

◆ gdbpy_is_field()

int gdbpy_is_field ( PyObject *  obj)

Definition at line 151 of file py-type.c.

References field_object_type.

Referenced by valpy_getitem().

◆ gdbpy_lookup_type()

PyObject* gdbpy_lookup_type ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
)

◆ make_fielditem()

static PyObject* make_fielditem ( struct type type,
int  i,
enum gdbpy_iter_kind  kind 
)
static

◆ save_objfile_types()

static void save_objfile_types ( struct objfile objfile,
void *  datum 
)
static

◆ set_type()

static void set_type ( type_object obj,
struct type type 
)
static

◆ type_object_to_type()

struct type* type_object_to_type ( PyObject *  obj)

◆ type_to_type_object()

PyObject* type_to_type_object ( struct type type)

◆ typy_array()

static PyObject* typy_array ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 539 of file py-type.c.

References typy_array_1().

◆ typy_array_1()

static PyObject* typy_array_1 ( PyObject *  self,
PyObject *  args,
int  is_vector 
)
static

◆ typy_const()

static PyObject* typy_const ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_dealloc()

static void typy_dealloc ( PyObject *  obj)
static

Definition at line 1079 of file py-type.c.

References Py_TYPE, TYPE_OBJFILE, and typy_objfile_data_key.

◆ typy_field_names()

static PyObject* typy_field_names ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 388 of file py-type.c.

References iter_keys, and typy_fields_items().

◆ typy_fields()

static PyObject* typy_fields ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_fields_items()

static PyObject* typy_fields_items ( PyObject *  self,
enum gdbpy_iter_kind  kind 
)
static

◆ typy_get()

static PyObject* typy_get ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1171 of file py-type.c.

References typy_getitem().

◆ typy_get_code()

static PyObject* typy_get_code ( PyObject *  self,
void *  closure 
)
static

Definition at line 158 of file py-type.c.

References TYPE_CODE.

◆ typy_get_composite()

static struct type* typy_get_composite ( struct type type)
static

◆ typy_get_name()

static PyObject* typy_get_name ( PyObject *  self,
void *  closure 
)
static

Definition at line 405 of file py-type.c.

References TYPE_NAME.

◆ typy_get_sizeof()

static PyObject* typy_get_sizeof ( PyObject *  self,
void *  closure 
)
static

◆ typy_get_tag()

static PyObject* typy_get_tag ( PyObject *  self,
void *  closure 
)
static

Definition at line 416 of file py-type.c.

References TYPE_TAG_NAME.

◆ typy_getitem()

static PyObject* typy_getitem ( PyObject *  self,
PyObject *  key 
)
static

◆ typy_has_key()

static PyObject* typy_has_key ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1196 of file py-type.c.

References strcmp_iw(), TYPE_FIELD_NAME, TYPE_NFIELDS, and typy_get_composite().

◆ typy_items()

static PyObject* typy_items ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 397 of file py-type.c.

References iter_items, and typy_fields_items().

◆ typy_iter()

static PyObject* typy_iter ( PyObject *  self)
static

Definition at line 1267 of file py-type.c.

References iter_keys, and typy_make_iter().

◆ typy_iterator_dealloc()

static void typy_iterator_dealloc ( PyObject *  obj)
static

Definition at line 1311 of file py-type.c.

References Py_DECREF, and typy_iterator_object::source.

◆ typy_iterator_iter()

static PyObject* typy_iterator_iter ( PyObject *  self)
static

Definition at line 1283 of file py-type.c.

◆ typy_iterator_iternext()

static PyObject* typy_iterator_iternext ( PyObject *  self)
static

◆ typy_iteritems()

static PyObject* typy_iteritems ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1250 of file py-type.c.

References iter_items, and typy_make_iter().

◆ typy_iterkeys()

static PyObject* typy_iterkeys ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1258 of file py-type.c.

References iter_keys, and typy_make_iter().

◆ typy_itervalues()

static PyObject* typy_itervalues ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1275 of file py-type.c.

References iter_values, and typy_make_iter().

◆ typy_legacy_template_argument()

static PyObject* typy_legacy_template_argument ( struct type type,
const struct block block,
int  argno 
)
static

◆ typy_length()

static Py_ssize_t typy_length ( PyObject *  self)
static

Definition at line 1102 of file py-type.c.

References TYPE_NFIELDS, and typy_get_composite().

◆ typy_lookup_type()

static struct type* typy_lookup_type ( struct demangle_component *  demangled,
const struct block block 
)
static

◆ typy_lookup_typename()

static struct type* typy_lookup_typename ( const char *  type_name,
const struct block block 
)
static

◆ typy_make_iter()

static PyObject * typy_make_iter ( PyObject *  self,
enum gdbpy_iter_kind  kind 
)
static

◆ typy_nonzero()

static int typy_nonzero ( PyObject *  self)
static

Definition at line 1118 of file py-type.c.

◆ typy_optimized_out()

static PyObject* typy_optimized_out ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 1126 of file py-type.c.

References allocate_optimized_out_value(), and value_to_value_object().

◆ typy_pointer()

static PyObject* typy_pointer ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_range()

static PyObject* typy_range ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_reference()

static PyObject* typy_reference ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_richcompare()

static PyObject* typy_richcompare ( PyObject *  self,
PyObject *  other,
int  op 
)
static

◆ typy_str()

static PyObject* typy_str ( PyObject *  self)
static

◆ typy_strip_typedefs()

static PyObject* typy_strip_typedefs ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_target()

static PyObject* typy_target ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 642 of file py-type.c.

References _, TYPE_TARGET_TYPE, and type_to_type_object().

◆ typy_template_argument()

static PyObject* typy_template_argument ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_unqualified()

static PyObject* typy_unqualified ( PyObject *  self,
PyObject *  args 
)
static

◆ typy_values()

static PyObject* typy_values ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 357 of file py-type.c.

References iter_values, and typy_fields_items().

◆ typy_vector()

static PyObject* typy_vector ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 547 of file py-type.c.

References typy_array_1().

◆ typy_volatile()

static PyObject* typy_volatile ( PyObject *  self,
PyObject *  args 
)
static

Variable Documentation

◆ field_object_getset

gdb_PyGetSetDef field_object_getset[]
static
Initial value:
=
{
{ "__dict__", gdb_py_generic_dict, NULL,
"The __dict__ for this field.", &field_object_type },
{ NULL }
}
PyObject * gdb_py_generic_dict(PyObject *self, void *closure)
Definition: py-utils.c:359
PyTypeObject field_object_type
Definition: py-type.c:1592

Definition at line 1585 of file py-type.c.

◆ field_object_type

PyTypeObject field_object_type

Definition at line 1592 of file py-type.c.

Referenced by field_new(), gdbpy_initialize_types(), and gdbpy_is_field().

◆ pyty_codes

struct pyty_code pyty_codes[]
static

Definition at line 88 of file py-type.c.

Referenced by gdbpy_initialize_types().

◆ type_iterator_object_type

PyTypeObject type_iterator_object_type
Initial value:
= {
"gdb.TypeIterator",
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER,
"GDB type iterator object",
0,
0,
0,
0,
0
}
#define PyVarObject_HEAD_INIT(type, size)
static void typy_iterator_dealloc(PyObject *obj)
Definition: py-type.c:1311
static PyObject * typy_iterator_iternext(PyObject *self)
Definition: py-type.c:1293
static PyObject * typy_iterator_iter(PyObject *self)
Definition: py-type.c:1283

Definition at line 1634 of file py-type.c.

Referenced by gdbpy_initialize_types(), and typy_make_iter().

◆ type_object_as_number

PyNumberMethods type_object_as_number
static

Definition at line 1502 of file py-type.c.

◆ type_object_getset

gdb_PyGetSetDef type_object_getset[]
static
Initial value:
=
{
{ "code", typy_get_code, NULL,
"The code for this type.", NULL },
{ "name", typy_get_name, NULL,
"The name for this type, or None.", NULL },
{ "sizeof", typy_get_sizeof, NULL,
"The size of this type, in bytes.", NULL },
{ "tag", typy_get_tag, NULL,
"The tag name for this type, or None.", NULL },
{ NULL }
}
static PyObject * typy_get_name(PyObject *self, void *closure)
Definition: py-type.c:405
static PyObject * typy_get_code(PyObject *self, void *closure)
Definition: py-type.c:158
static PyObject * typy_get_tag(PyObject *self, void *closure)
Definition: py-type.c:416
static PyObject * typy_get_sizeof(PyObject *self, void *closure)
Definition: py-type.c:715

Definition at line 1411 of file py-type.c.

◆ type_object_methods

PyMethodDef type_object_methods[]
static

Definition at line 1424 of file py-type.c.

◆ type_object_type

PyTypeObject type_object_type

Definition at line 1543 of file py-type.c.

Referenced by gdbpy_initialize_types(), type_object_to_type(), and type_to_type_object().

◆ typy_mapping

PyMappingMethods typy_mapping
static
Initial value:
= {
NULL
}
static Py_ssize_t typy_length(PyObject *self)
Definition: py-type.c:1102
static PyObject * typy_getitem(PyObject *self, PyObject *key)
Definition: py-type.c:1136

Definition at line 1537 of file py-type.c.

◆ typy_objfile_data_key

const struct objfile_data* typy_objfile_data_key
static

Definition at line 1025 of file py-type.c.

Referenced by gdbpy_initialize_types(), set_type(), and typy_dealloc().