gdbpy_ref<>
symbol_to_symbol_object (struct symbol *sym)
{
- symbol_object *sym_obj;
-
/* Look if there's already a gdb.Symbol object for given SYMBOL
and if so, return it. */
+ gdbpy_ref<> result;
if (sym->is_objfile_owned ())
- sym_obj = sympy_registry.lookup (sym->objfile (), sym);
+ result = sympy_registry.lookup (sym->objfile (), sym);
else
- sym_obj = sympy_registry.lookup (sym->arch (), sym);
- if (sym_obj != nullptr)
- return gdbpy_ref<> (sym_obj);
+ result = sympy_registry.lookup (sym->arch (), sym);
+ if (result != nullptr)
+ return result;
- sym_obj = PyObject_New (symbol_object, &symbol_object_type);
+ symbol_object *sym_obj = PyObject_New (symbol_object, &symbol_object_type);
if (sym_obj)
set_symbol (sym_obj, sym);
and if so, return it. */
if (symtab != nullptr)
{
- symtab_obj = stpy_registry.lookup (symtab->compunit ()->objfile (),
- symtab);
- if (symtab_obj != nullptr)
- return gdbpy_ref<> (symtab_obj);
+ gdbpy_ref<> result
+ = stpy_registry.lookup (symtab->compunit ()->objfile (), symtab);
+ if (result != nullptr)
+ return result;
}
symtab_obj = PyObject_New (symtab_object, &symtab_object_type);
gdbpy_ref<>
type_to_type_object (struct type *type)
{
- type_object *type_obj;
-
try
{
/* Try not to let stub types leak out to Python. */
/* Look if there's already a gdb.Type object for given TYPE
and if so, return it. */
+ gdbpy_ref<> result;
if (type->is_objfile_owned ())
- type_obj = typy_registry.lookup (type->objfile_owner (), type);
+ result = typy_registry.lookup (type->objfile_owner (), type);
else
- type_obj = typy_registry.lookup (type->arch_owner (), type);
+ result = typy_registry.lookup (type->arch_owner (), type);
- if (type_obj == nullptr)
+ if (result == nullptr)
{
- type_obj = PyObject_New (type_object, &type_object_type);
- if (type_obj)
+ type_object *type_obj = PyObject_New (type_object, &type_object_type);
+ if (type_obj != nullptr)
set_type (type_obj, type);
+ result = gdbpy_ref<> (type_obj);
}
- return gdbpy_ref<> (type_obj);
+ return result;
}
struct type *
}
/* Lookup pre-existing Python object for given VAL. Return such object
- if found, otherwise return NULL. This method always returns new
- reference. */
+ if found, otherwise return NULL. */
template <typename O>
- obj_type *lookup (O *owner, val_type *val) const
+ gdbpy_ref<> lookup (O *owner, val_type *val) const
{
obj_type *obj = get_storage (owner)->lookup (val);
Py_XINCREF (static_cast<PyObject *> (obj));
- return obj;
+ return gdbpy_ref<> (obj);
}
private: