mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
Make fixed_point_type_base_type a method of struct type
As suggested by Simon, to logically connect this function to the object it inspects. Note that, logically, this method should be "const". Unfortunately, the implementation iterates on struct type objects starting with "this", and thus trying to declare the method "const" triggers a compilation error. gdb/ChangeLog: * gdbtypes.h (struct type) <fixed_point_type_base_type> New method, replacing the fixed_point_type_base_type function. All callers updated throughout this project. (fixed_point_type_base_type): Remove declaration. * gdbtypes.c (type::fixed_point_type_base_type): Replaces fixed_point_type_base_type. Adjust implementation accordingly.
This commit is contained in:
parent
2a12c336b9
commit
d19937a74c
@ -1,3 +1,12 @@
|
|||||||
|
2020-11-24 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* gdbtypes.h (struct type) <fixed_point_type_base_type> New method,
|
||||||
|
replacing the fixed_point_type_base_type function. All callers
|
||||||
|
updated throughout this project.
|
||||||
|
(fixed_point_type_base_type): Remove declaration.
|
||||||
|
* gdbtypes.c (type::fixed_point_type_base_type): Replaces
|
||||||
|
fixed_point_type_base_type. Adjust implementation accordingly.
|
||||||
|
|
||||||
2020-11-24 Joel Brobecker <brobecker@adacore.com>
|
2020-11-24 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* gdbtypes.h (struct type) <fixed_point_info, set_fixed_point_info>:
|
* gdbtypes.h (struct type) <fixed_point_info, set_fixed_point_info>:
|
||||||
|
@ -1028,7 +1028,7 @@ ada_value_print_1 (struct value *val, struct ui_file *stream, int recurse,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_fixed_point_type (type))
|
if (is_fixed_point_type (type))
|
||||||
type = fixed_point_type_base_type (type);
|
type = type->fixed_point_type_base_type ();
|
||||||
|
|
||||||
switch (type->code ())
|
switch (type->code ())
|
||||||
{
|
{
|
||||||
|
@ -5866,8 +5866,10 @@ is_fixed_point_type (struct type *type)
|
|||||||
/* See gdbtypes.h. */
|
/* See gdbtypes.h. */
|
||||||
|
|
||||||
struct type *
|
struct type *
|
||||||
fixed_point_type_base_type (struct type *type)
|
type::fixed_point_type_base_type ()
|
||||||
{
|
{
|
||||||
|
struct type *type = this;
|
||||||
|
|
||||||
while (check_typedef (type)->code () == TYPE_CODE_RANGE)
|
while (check_typedef (type)->code () == TYPE_CODE_RANGE)
|
||||||
type = TYPE_TARGET_TYPE (check_typedef (type));
|
type = TYPE_TARGET_TYPE (check_typedef (type));
|
||||||
type = check_typedef (type);
|
type = check_typedef (type);
|
||||||
@ -5881,7 +5883,7 @@ fixed_point_type_base_type (struct type *type)
|
|||||||
const gdb_mpq &
|
const gdb_mpq &
|
||||||
fixed_point_scaling_factor (struct type *type)
|
fixed_point_scaling_factor (struct type *type)
|
||||||
{
|
{
|
||||||
type = fixed_point_type_base_type (type);
|
type = type->fixed_point_type_base_type ();
|
||||||
|
|
||||||
return type->fixed_point_info ().scaling_factor;
|
return type->fixed_point_info ().scaling_factor;
|
||||||
}
|
}
|
||||||
|
@ -1215,6 +1215,15 @@ struct type
|
|||||||
this->main_type->type_specific.fixed_point_info = info;
|
this->main_type->type_specific.fixed_point_info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* * Assuming that THIS is a TYPE_CODE_FIXED_POINT, return its base type.
|
||||||
|
|
||||||
|
In other words, this returns the type after having peeled all
|
||||||
|
intermediate type layers (such as TYPE_CODE_RANGE, for instance).
|
||||||
|
The TYPE_CODE of the type returned is guaranteed to be
|
||||||
|
a TYPE_CODE_FIXED_POINT. */
|
||||||
|
|
||||||
|
struct type *fixed_point_type_base_type ();
|
||||||
|
|
||||||
/* * Return the dynamic property of the requested KIND from this type's
|
/* * Return the dynamic property of the requested KIND from this type's
|
||||||
list of dynamic properties. */
|
list of dynamic properties. */
|
||||||
dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;
|
dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;
|
||||||
@ -2587,14 +2596,6 @@ extern int type_not_associated (const struct type *type);
|
|||||||
a range type whose base type is a TYPE_CODE_FIXED_POINT. */
|
a range type whose base type is a TYPE_CODE_FIXED_POINT. */
|
||||||
extern bool is_fixed_point_type (struct type *type);
|
extern bool is_fixed_point_type (struct type *type);
|
||||||
|
|
||||||
/* Assuming that TYPE is a fixed point type, return its base type.
|
|
||||||
|
|
||||||
In other words, this returns the type after having peeled all
|
|
||||||
intermediate type layers (such as TYPE_CODE_RANGE, for instance).
|
|
||||||
The TYPE_CODE of the type returned is guaranteed to be
|
|
||||||
a TYPE_CODE_FIXED_POINT. */
|
|
||||||
extern struct type *fixed_point_type_base_type (struct type *type);
|
|
||||||
|
|
||||||
/* Given TYPE, which is a fixed point type, return its scaling factor. */
|
/* Given TYPE, which is a fixed point type, return its scaling factor. */
|
||||||
extern const gdb_mpq &fixed_point_scaling_factor (struct type *type);
|
extern const gdb_mpq &fixed_point_scaling_factor (struct type *type);
|
||||||
|
|
||||||
|
@ -871,7 +871,7 @@ generic_value_print (struct value *val, struct ui_file *stream, int recurse,
|
|||||||
type = check_typedef (type);
|
type = check_typedef (type);
|
||||||
|
|
||||||
if (is_fixed_point_type (type))
|
if (is_fixed_point_type (type))
|
||||||
type = fixed_point_type_base_type (type);
|
type = type->fixed_point_type_base_type ();
|
||||||
|
|
||||||
switch (type->code ())
|
switch (type->code ())
|
||||||
{
|
{
|
||||||
|
@ -2759,7 +2759,7 @@ LONGEST
|
|||||||
unpack_long (struct type *type, const gdb_byte *valaddr)
|
unpack_long (struct type *type, const gdb_byte *valaddr)
|
||||||
{
|
{
|
||||||
if (is_fixed_point_type (type))
|
if (is_fixed_point_type (type))
|
||||||
type = fixed_point_type_base_type (type);
|
type = type->fixed_point_type_base_type ();
|
||||||
|
|
||||||
enum bfd_endian byte_order = type_byte_order (type);
|
enum bfd_endian byte_order = type_byte_order (type);
|
||||||
enum type_code code = type->code ();
|
enum type_code code = type->code ();
|
||||||
|
Loading…
Reference in New Issue
Block a user