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"

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 PyGetSetDef type_object_getset []
 
static PyMethodDef type_object_methods []
 
static PyNumberMethods type_object_as_number
 
static PyMappingMethods typy_mapping
 
PyTypeObject type_object_type
 
static PyGetSetDef field_object_getset []
 
PyTypeObject field_object_type
 
PyTypeObject type_iterator_object_type
 

Macro Definition Documentation

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

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

Typedef Documentation

typedef struct pyty_type_object type_object

Function Documentation

static PyObject* convert_field ( struct type type,
int  field 
)
static
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 void field_dealloc ( PyObject *  obj)
static

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

References pyty_field_object::dict, and Py_TYPE.

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

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

References pyty_field_object::dict, field_object_type, and Py_DECREF.

Referenced by convert_field().

int gdbpy_initialize_types ( void  )
int gdbpy_is_field ( PyObject *  obj)

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

References field_object_type.

Referenced by valpy_getitem().

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

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

References _, block_object_to_block(), type_to_type_object(), and typy_lookup_typename().

static PyObject* make_fielditem ( struct type type,
int  i,
enum gdbpy_iter_kind  kind 
)
static
static void save_objfile_types ( struct objfile objfile,
void *  datum 
)
static
static void set_type ( type_object obj,
struct type type 
)
static
struct type* type_object_to_type ( PyObject *  obj)
PyObject* type_to_type_object ( struct type type)
static PyObject* typy_array ( PyObject *  self,
PyObject *  args 
)
static

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

References typy_array_1().

static PyObject* typy_array_1 ( PyObject *  self,
PyObject *  args,
int  is_vector 
)
static
static PyObject* typy_const ( PyObject *  self,
PyObject *  args 
)
static
static void typy_dealloc ( PyObject *  obj)
static
static PyObject* typy_field_names ( PyObject *  self,
PyObject *  args 
)
static

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

References iter_keys, and typy_fields_items().

static PyObject* typy_fields ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* typy_fields_items ( PyObject *  self,
enum gdbpy_iter_kind  kind 
)
static
static PyObject* typy_get ( PyObject *  self,
PyObject *  args 
)
static

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

References typy_getitem().

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

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

References TYPE_CODE.

static struct type* typy_get_composite ( struct type type)
static
static PyObject* typy_get_name ( PyObject *  self,
void *  closure 
)
static

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

References TYPE_NAME.

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

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

References TYPE_TAG_NAME.

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

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

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

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

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

References iter_items, and typy_fields_items().

static PyObject* typy_iter ( PyObject *  self)
static

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

References iter_keys, and typy_make_iter().

static void typy_iterator_dealloc ( PyObject *  obj)
static

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

References Py_DECREF, and typy_iterator_object::source.

static PyObject* typy_iterator_iter ( PyObject *  self)
static

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

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

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

References iter_items, and typy_make_iter().

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

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

References iter_keys, and typy_make_iter().

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

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

References iter_values, and typy_make_iter().

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

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

References TYPE_NFIELDS, and typy_get_composite().

static struct type* typy_lookup_type ( struct demangle_component *  demangled,
const struct block block 
)
static
static struct type* typy_lookup_typename ( const char *  type_name,
const struct block block 
)
static
static PyObject * typy_make_iter ( PyObject *  self,
enum gdbpy_iter_kind  kind 
)
static
static int typy_nonzero ( PyObject *  self)
static

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

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

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

References allocate_optimized_out_value(), and value_to_value_object().

static PyObject* typy_pointer ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* typy_range ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* typy_reference ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* typy_richcompare ( PyObject *  self,
PyObject *  other,
int  op 
)
static
static PyObject* typy_str ( PyObject *  self)
static
static PyObject* typy_strip_typedefs ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* typy_target ( PyObject *  self,
PyObject *  args 
)
static

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

References _, TYPE_TARGET_TYPE, and type_to_type_object().

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

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

References iter_values, and typy_fields_items().

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

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

References typy_array_1().

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

Variable Documentation

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:420
PyTypeObject field_object_type
Definition: py-type.c:1654

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

PyTypeObject field_object_type

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

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

struct pyty_code pyty_codes[]
static
Initial value:
=
{
{ TYPE_CODE_UNDEF, NULL }
}
#define ENTRY(X)
Definition: py-type.c:85

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

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
}
static void typy_iterator_dealloc(PyObject *obj)
Definition: py-type.c:1373
static PyObject * typy_iterator_iternext(PyObject *self)
Definition: py-type.c:1355
static PyObject * typy_iterator_iter(PyObject *self)
Definition: py-type.c:1345
#define PyVarObject_HEAD_INIT(type, size)

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

Referenced by gdbpy_initialize_types(), and typy_make_iter().

PyNumberMethods type_object_as_number
static

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

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:430
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:441
static PyObject * typy_get_sizeof(PyObject *self, void *closure)
Definition: py-type.c:755

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

PyMethodDef type_object_methods[]
static

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

PyTypeObject type_object_type

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

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

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

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

const struct objfile_data* typy_objfile_data_key
static

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

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