57#define BLPY_REQUIRE_VALID(block_obj, block) \
59 block = block_object_to_block (block_obj); \
62 PyErr_SetString (PyExc_RuntimeError, \
63 _("Block is invalid.")); \
70#define BLPY_ITER_REQUIRE_VALID(block_obj) \
72 if (block_obj->block == NULL) \
74 PyErr_SetString (PyExc_RuntimeError, \
75 _("Source block for iterator is invalid.")); \
118 if (block_iter_obj == NULL)
126 return (PyObject *) block_iter_obj;
168 const struct block *super_block;
205 const struct block *static_block;
273 struct symbol *sym =
nullptr;
282 PyErr_SetObject (PyExc_KeyError, key);
295 else if (
block->objfile)
300 Py_TYPE (obj)->tp_free (obj);
337 return (PyObject *) block_obj;
381 PyErr_SetString (PyExc_StopIteration, _(
"Symbol is null."));
393 Py_XDECREF (iter_obj->
source);
394 Py_TYPE (obj)->tp_free (obj);
450 "is_valid () -> Boolean.\n\
451Return true if this block is valid, false if not." },
456 {
"start",
blpy_get_start, NULL,
"Start address of the block.", NULL },
457 {
"end",
blpy_get_end, NULL,
"End address of the block.", NULL },
459 "Symbol that names the block, or None.", NULL },
461 "Block containing the block, or None.", NULL },
463 "Block containing the global block.", NULL },
465 "Block containing the static block.", NULL },
467 "Whether this block is a static block.", NULL },
469 "Whether this block is a global block.", NULL },
480 PyVarObject_HEAD_INIT (NULL, 0)
514 "is_valid () -> Boolean.\n\
515Return true if this block iterator is valid, false if not." },
520 PyVarObject_HEAD_INIT (NULL, 0)
540 "GDB block syms iterator object",
const struct block * block_global_block(const struct block *block)
const struct block * block_static_block(const struct block *block)
struct symbol * block_iterator_next(struct block_iterator *iterator)
struct symbol * block_iterator_first(const struct block *block, struct block_iterator *iterator)
#define ALL_BLOCK_SYMBOLS_WITH_NAME(block, name, iter, sym)
void set(unsigned key, void *datum)
static PyObject * blpy_getitem(PyObject *self, PyObject *key)
PyObject * block_to_block_object(const struct block *block, struct objfile *objfile)
static PyObject * blpy_get_static_block(PyObject *self, void *closure)
static PyObject * blpy_get_global_block(PyObject *self, void *closure)
PyTypeObject block_object_type
static void set_block(block_object *obj, const struct block *block, struct objfile *objfile)
static PyObject * blpy_block_syms_iter(PyObject *self)
static PyObject * blpy_is_valid(PyObject *self, PyObject *args)
static PyMethodDef block_iterator_object_methods[]
static PyObject * blpy_is_global(PyObject *self, void *closure)
static PyObject * blpy_block_syms_iternext(PyObject *self)
static PyObject * blpy_get_function(PyObject *self, void *closure)
PyTypeObject block_syms_iterator_object_type
#define BLPY_REQUIRE_VALID(block_obj, block)
static PyMappingMethods block_object_as_mapping
static void blpy_dealloc(PyObject *obj)
static PyObject * blpy_get_start(PyObject *self, void *closure)
static PyObject * blpy_get_end(PyObject *self, void *closure)
static gdb_PyGetSetDef block_object_getset[]
#define BLPY_ITER_REQUIRE_VALID(block_obj)
int gdbpy_initialize_blocks(void)
const struct block * block_object_to_block(PyObject *obj)
static PyObject * blpy_iter(PyObject *self)
static PyObject * blpy_get_superblock(PyObject *self, void *closure)
static PyObject * blpy_is_static(PyObject *self, void *closure)
static void blpy_block_syms_dealloc(PyObject *obj)
static PyObject * blpy_iter_is_valid(PyObject *self, PyObject *args)
static PyMethodDef block_object_methods[]
static const registry< objfile >::key< block_object, blpy_deleter > blpy_objfile_data_key
PyObject * symbol_to_symbol_object(struct symbol *sym)
int gdb_pymodule_addobject(PyObject *module, const char *name, PyObject *object)
gdb::unique_xmalloc_ptr< char > python_string_to_host_string(PyObject *obj)
gdbpy_ref gdb_py_object_from_ulongest(ULONGEST l)
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
PyObject_HEAD const struct block * block
struct block_iterator iter
PyObject_HEAD const struct block * block
const block * superblock() const
symbol * function() const
void operator()(block_object *obj)
const struct block * block
struct objfile * objfile() const