forked from Imagelibrary/binutils-gdb
Change {lookup,make}_reference_type API
Parameterize lookup_reference_type() and make_reference_type() by the kind of
reference type we want to look up. Create two wrapper functions
lookup_{lvalue,rvalue}_reference_type() for lookup_reference_type() to simplify
the API. Change all callers to use the new API.
gdb/Changelog
PR gdb/14441
* dwarf2read.c (read_tag_reference_type): Use
lookup_lvalue_reference_type() instead of lookup_reference_type().
* eval.c (evaluate_subexp_standard): Likewise.
* f-exp.y: Likewise.
* gdbtypes.c (make_reference_type, lookup_reference_type):
Generalize with rvalue reference types.
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): New
convenience wrappers for lookup_reference_type().
* gdbtypes.h (make_reference_type, lookup_reference_type): Add a
reference kind parameter.
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): Add
wrappers for lookup_reference_type().
* guile/scm-type.c (gdbscm_type_reference): Use
lookup_lvalue_reference_type() instead of lookup_reference_type().
* guile/scm-value.c (gdbscm_value_dynamic_type): Likewise.
* parse.c (follow_types): Likewise.
* python/py-type.c (typy_reference, typy_lookup_type): Likewise.
* python/py-value.c (valpy_get_dynamic_type, valpy_getitem):
Likewise.
* python/py-xmethods.c (gdbpy_get_xmethod_result_type)
(gdbpy_invoke_xmethod): Likewise.
* stabsread.c: Provide extra argument to make_reference_type()
call.
* valops.c (value_ref, value_rtti_indirect_type): Use
lookup_lvalue_reference_type() instead of lookup_reference_type().
This commit is contained in:
committed by
Keith Seitz
parent
f9aeb8d499
commit
3b22433085
@@ -626,7 +626,7 @@ typy_reference (PyObject *self, PyObject *args)
|
||||
|
||||
TRY
|
||||
{
|
||||
type = lookup_reference_type (type);
|
||||
type = lookup_lvalue_reference_type (type);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
@@ -786,7 +786,7 @@ typy_lookup_type (struct demangle_component *demangled,
|
||||
switch (demangled_type)
|
||||
{
|
||||
case DEMANGLE_COMPONENT_REFERENCE:
|
||||
rtype = lookup_reference_type (type);
|
||||
rtype = lookup_lvalue_reference_type (type);
|
||||
break;
|
||||
case DEMANGLE_COMPONENT_POINTER:
|
||||
rtype = lookup_pointer_type (type);
|
||||
|
||||
@@ -369,7 +369,7 @@ valpy_get_dynamic_type (PyObject *self, void *closure)
|
||||
if (was_pointer)
|
||||
type = lookup_pointer_type (type);
|
||||
else
|
||||
type = lookup_reference_type (type);
|
||||
type = lookup_lvalue_reference_type (type);
|
||||
}
|
||||
}
|
||||
else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
|
||||
@@ -801,7 +801,8 @@ valpy_getitem (PyObject *self, PyObject *key)
|
||||
if (TYPE_CODE (val_type) == TYPE_CODE_PTR)
|
||||
res_val = value_cast (lookup_pointer_type (base_class_type), tmp);
|
||||
else if (TYPE_CODE (val_type) == TYPE_CODE_REF)
|
||||
res_val = value_cast (lookup_reference_type (base_class_type), tmp);
|
||||
res_val = value_cast (lookup_lvalue_reference_type (base_class_type),
|
||||
tmp);
|
||||
else
|
||||
res_val = value_cast (base_class_type, tmp);
|
||||
}
|
||||
|
||||
@@ -466,7 +466,7 @@ gdbpy_get_xmethod_result_type (const struct extension_language_defn *extlang,
|
||||
}
|
||||
else if (TYPE_CODE (obj_type) == TYPE_CODE_REF)
|
||||
{
|
||||
struct type *this_ref = lookup_reference_type (this_type);
|
||||
struct type *this_ref = lookup_lvalue_reference_type (this_type);
|
||||
|
||||
if (!types_equal (obj_type, this_ref))
|
||||
obj = value_cast (this_ref, obj);
|
||||
@@ -554,7 +554,7 @@ gdbpy_invoke_xmethod (const struct extension_language_defn *extlang,
|
||||
}
|
||||
else if (TYPE_CODE (obj_type) == TYPE_CODE_REF)
|
||||
{
|
||||
struct type *this_ref = lookup_reference_type (this_type);
|
||||
struct type *this_ref = lookup_lvalue_reference_type (this_type);
|
||||
|
||||
if (!types_equal (obj_type, this_ref))
|
||||
obj = value_cast (this_ref, obj);
|
||||
|
||||
Reference in New Issue
Block a user