Make function fixed_point_scaling_factor a method of struct type
authorJoel Brobecker <brobecker@adacore.com>
Tue, 24 Nov 2020 02:49:13 +0000 (21:49 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Tue, 24 Nov 2020 02:49:13 +0000 (21:49 -0500)
This logically connects this function to the object it inspects.

gdb/ChangeLog:

        * gdbtypes.h (struct type) <fixed_point_scaling_factor>: New method,
        replacing fixed_point_scaling_factor.  All callers updated
        throughout this project.
        (fixed_point_scaling_factor): Delete declaration.
        * gdbtypes.c (type::fixed_point_scaling_factor): Replaces
        fixed_point_scaling_factor.  Adjust implementation accordingly.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/typeprint.c
gdb/valarith.c
gdb/valops.c
gdb/valprint.c
gdb/value.c

index 3db63657919321c71b2cf92d846da44b7bfa074f..d1a1b9584f477dcd7360907eb350906949b6b172 100644 (file)
@@ -1,3 +1,12 @@
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+       * gdbtypes.h (struct type) <fixed_point_scaling_factor>: New method,
+       replacing fixed_point_scaling_factor.  All callers updated
+       throughout this project.
+       (fixed_point_scaling_factor): Delete declaration.
+       * gdbtypes.c (type::fixed_point_scaling_factor): Replaces
+       fixed_point_scaling_factor.  Adjust implementation accordingly.
+
 2020-11-24  Joel Brobecker  <brobecker@adacore.com>
 
        * gdbtypes.h (struct type) <fixed_point_type_base_type> New method,
index fa4e8f01f29e8f3ac3379644c77b8d787ff3b65b..4eaefa5ee652f7bc75b007a321fde71f595abda7 100644 (file)
@@ -4927,7 +4927,7 @@ static void
 print_fixed_point_type_info (struct type *type, int spaces)
 {
   printfi_filtered (spaces + 2, "scaling factor: %s\n",
-                   fixed_point_scaling_factor (type).str ().c_str ());
+                   type->fixed_point_scaling_factor ().str ().c_str ());
 }
 
 static struct obstack dont_print_type_obstack;
@@ -5881,9 +5881,9 @@ type::fixed_point_type_base_type ()
 /* See gdbtypes.h.  */
 
 const gdb_mpq &
-fixed_point_scaling_factor (struct type *type)
+type::fixed_point_scaling_factor ()
 {
-  type = type->fixed_point_type_base_type ();
+  struct type *type = this->fixed_point_type_base_type ();
 
   return type->fixed_point_info ().scaling_factor;
 }
index 88fb0e7a3936a877758eae4604c4ef260f6ec6a5..eecd874cfae1a668e8743f13fbddaa94a3651573 100644 (file)
@@ -1224,6 +1224,11 @@ struct type
 
   struct type *fixed_point_type_base_type ();
 
+  /* * Assuming that THIS is a TYPE_CODE_FIXED_POINT, return its scaling
+     factor.  */
+
+  const gdb_mpq &fixed_point_scaling_factor ();
+
   /* * Return the dynamic property of the requested KIND from this type's
      list of dynamic properties.  */
   dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;
@@ -2596,9 +2601,6 @@ extern int type_not_associated (const struct type *type);
    a range type whose base type is a TYPE_CODE_FIXED_POINT.  */
 extern bool is_fixed_point_type (struct type *type);
 
-/* Given TYPE, which is a fixed point type, return its scaling factor.  */
-extern const gdb_mpq &fixed_point_scaling_factor (struct type *type);
-
 /* Allocate a fixed-point type info for TYPE.  This should only be
    called by INIT_FIXED_POINT_SPECIFIC.  */
 extern void allocate_fixed_point_type_info (struct type *type);
index 0dd3b1c482143a49c8a54c788049d4892b7487c3..a3fc9ccff306b7a9e492cb15b06e82a73cac63bb 100644 (file)
@@ -667,7 +667,7 @@ print_type_scalar (struct type *type, LONGEST val, struct ui_file *stream)
 void
 print_type_fixed_point (struct type *type, struct ui_file *stream)
 {
-  std::string small_img = fixed_point_scaling_factor (type).str ();
+  std::string small_img = type->fixed_point_scaling_factor ().str ();
 
   fprintf_filtered (stream, "%s-byte fixed point (small = %s)",
                    pulongest (TYPE_LENGTH (type)), small_img.c_str ());
index 7ab183cbdc45c3bc03e3959619748ce45132fd78..29ac46b4492b295d7b8af0602044f369063a28c2 100644 (file)
@@ -911,11 +911,11 @@ fixed_point_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
   v1.read_fixed_point (gdb::make_array_view (value_contents (arg1),
                                             TYPE_LENGTH (type1)),
                       type_byte_order (type1), type1->is_unsigned (),
-                      fixed_point_scaling_factor (type1));
+                      type1->fixed_point_scaling_factor ());
   v2.read_fixed_point (gdb::make_array_view (value_contents (arg2),
                                             TYPE_LENGTH (type2)),
                       type_byte_order (type2), type2->is_unsigned (),
-                      fixed_point_scaling_factor (type2));
+                      type2->fixed_point_scaling_factor ());
 
 #define INIT_VAL_WITH_FIXED_POINT_VAL(RESULT) \
   do { \
@@ -924,7 +924,7 @@ fixed_point_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
         (gdb::make_array_view (value_contents_raw (val), \
                               TYPE_LENGTH (type1)), \
         type_byte_order (type1), type1->is_unsigned (), \
-        fixed_point_scaling_factor (type1)); \
+        type1->fixed_point_scaling_factor ()); \
      } while (0)
 
   switch (op)
index 3e2d5d36c8a820e91873dc7b45968d56f8de435e..4d0e002b20d618c0e146d54c70e570aa942c6447 100644 (file)
@@ -363,7 +363,7 @@ value_cast_to_fixed_point (struct type *to_type, struct value *from_val)
       mpq_set_z (vq.val, vz.val);
 
       if (is_fixed_point_type (from_type))
-       mpq_mul (vq.val, vq.val, fixed_point_scaling_factor (from_type).val);
+       mpq_mul (vq.val, vq.val, from_type->fixed_point_scaling_factor ().val);
     }
 
   else
@@ -373,7 +373,7 @@ value_cast_to_fixed_point (struct type *to_type, struct value *from_val)
   /* Divide that value by the scaling factor to obtain the unscaled
      value, first in rational form, and then in integer form.  */
 
-  mpq_div (vq.val, vq.val, fixed_point_scaling_factor (to_type).val);
+  mpq_div (vq.val, vq.val, to_type->fixed_point_scaling_factor ().val);
   gdb_mpz unscaled = vq.get_rounded ();
 
   /* Finally, create the result value, and pack the unscaled value
@@ -527,7 +527,7 @@ value_cast (struct type *type, struct value *arg2)
          fp_val.read_fixed_point
            (gdb::make_array_view (value_contents (arg2), TYPE_LENGTH (type2)),
             type_byte_order (type2), type2->is_unsigned (),
-            fixed_point_scaling_factor (type2));
+            type2->fixed_point_scaling_factor ());
 
          struct value *v = allocate_value (to_type);
          target_float_from_host_double (value_contents_raw (v),
index 6e9262e7f6398205457ded05fae100bbab46fa57..50278ac30933e229633108a86700c48a027902e4 100644 (file)
@@ -811,7 +811,7 @@ generic_val_print_fixed_point (struct value *val, struct ui_file *stream,
 
       f.read_fixed_point (gdb::make_array_view (valaddr, TYPE_LENGTH (type)),
                          type_byte_order (type), type->is_unsigned (),
-                         fixed_point_scaling_factor (type));
+                         type->fixed_point_scaling_factor ());
 
       const char *fmt = TYPE_LENGTH (type) < 4 ? "%.11Fg" : "%.17Fg";
       std::string str = gmp_string_printf (fmt, f.val);
index f6c1a36ac0f84d94a2bad81f040256d6838e7a8e..0087fe577a17e4e678da6cfab67572f21d0b49af 100644 (file)
@@ -2814,7 +2814,7 @@ unpack_long (struct type *type, const gdb_byte *valaddr)
        gdb_mpq vq;
        vq.read_fixed_point (gdb::make_array_view (valaddr, len),
                             byte_order, nosign,
-                            fixed_point_scaling_factor (type));
+                            type->fixed_point_scaling_factor ());
 
        gdb_mpz vz;
        mpz_tdiv_q (vz.val, mpq_numref (vq.val), mpq_denref (vq.val));