[gdb/testsuite] Rewrite gdb_test_lines
[deliverable/binutils-gdb.git] / gdb / c-varobj.c
index 362fd79c89b4fa0a4064f8ed53b97a6eae798cae..f6db3a5d1ba77ad86e7d36a2cd94ef5fdc26069b 100644 (file)
@@ -1,6 +1,6 @@
 /* varobj support for C and C++.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -120,10 +120,10 @@ adjust_value_for_child_access (struct value **value,
 
       enclosing_type = value_actual_type (*value, 1, &real_type_found);
       if (real_type_found)
-        {
-          *type = enclosing_type;
-          *value = value_cast (enclosing_type, *value);
-        }
+       {
+         *type = enclosing_type;
+         *value = value_cast (enclosing_type, *value);
+       }
     }
 }
 
@@ -192,7 +192,7 @@ c_number_of_children (const struct varobj *var)
     {
     case TYPE_CODE_ARRAY:
       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
-         && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+         && (type->bounds ()->high.kind () != PROP_UNDEFINED))
        children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
       else
        /* If we don't know how many elements there are, don't display
@@ -210,10 +210,10 @@ c_number_of_children (const struct varobj *var)
         have one child, except for function ptrs, which have no children,
         and except for void*, as we don't know what to show.
 
-         We can show char* so we allow it to be dereferenced.  If you decide
-         to test for it, please mind that a little magic is necessary to
-         properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
-         TYPE_NAME == "char".  */
+        We can show char* so we allow it to be dereferenced.  If you decide
+        to test for it, please mind that a little magic is necessary to
+        properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
+        TYPE_NAME == "char".  */
       if (target->code () == TYPE_CODE_FUNC
          || target->code () == TYPE_CODE_VOID)
        children = 0;
@@ -306,13 +306,13 @@ c_describe_child (const struct varobj *parent, int index,
     {
     case TYPE_CODE_ARRAY:
       if (cname)
-       *cname = int_string (index
-                            + TYPE_LOW_BOUND (type->index_type ()),
+       *cname = int_string (index + type->bounds ()->low.const_val (),
                             10, 1, 0, 0);
 
       if (cvalue && value)
        {
-         int real_index = index + TYPE_LOW_BOUND (type->index_type ());
+         int real_index
+           = index + type->bounds ()->low.const_val ();
 
          try
            {
@@ -327,12 +327,10 @@ c_describe_child (const struct varobj *parent, int index,
        *ctype = get_target_type (type);
 
       if (cfull_expression)
-       *cfull_expression = 
-         string_printf ("(%s)[%s]", parent_expression.c_str (),
-                        int_string (index
-                                    + TYPE_LOW_BOUND (type->index_type ()),
-                                    10, 1, 0, 0));
-
+       *cfull_expression = string_printf
+         ("(%s)[%s]", parent_expression.c_str (),
+          int_string (index + type->bounds ()->low.const_val (),
+                      10, 1, 0, 0));
 
       break;
 
@@ -348,7 +346,7 @@ c_describe_child (const struct varobj *parent, int index,
          {
            if (cname)
              {
-               if (TYPE_FIELD_TYPE (type, index)->code ()
+               if (type->field (index).type ()->code ()
                    == TYPE_CODE_STRUCT)
                  *cname = ANONYMOUS_STRUCT_NAME;
                else
@@ -380,7 +378,7 @@ c_describe_child (const struct varobj *parent, int index,
          }
 
        if (ctype)
-         *ctype = TYPE_FIELD_TYPE (type, index);
+         *ctype = type->field (index).type ();
       }
       break;
 
@@ -574,11 +572,11 @@ cplus_number_of_children (const struct varobj *var)
 
       /* It is necessary to access a real type (via RTTI).  */
       if (opts.objectprint)
-        {
-          value = var->value.get ();
-          lookup_actual_type = (TYPE_IS_REFERENCE (var->type)
+       {
+         value = var->value.get ();
+         lookup_actual_type = (TYPE_IS_REFERENCE (var->type)
                                || var->type->code () == TYPE_CODE_PTR);
-        }
+       }
       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
 
       if (((type->code ()) == TYPE_CODE_STRUCT)
@@ -609,13 +607,13 @@ cplus_number_of_children (const struct varobj *var)
 
       /* It is necessary to access a real type (via RTTI).  */
       if (opts.objectprint)
-        {
+       {
          const struct varobj *parent = var->parent;
 
          value = parent->value.get ();
          lookup_actual_type = (TYPE_IS_REFERENCE (parent->type)
                                || parent->type->code () == TYPE_CODE_PTR);
-        }
+       }
       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
 
       cplus_class_num_children (type, kids);
@@ -771,10 +769,10 @@ cplus_describe_child (const struct varobj *parent, int index,
            {
              if (cname)
                {
-                 if (TYPE_FIELD_TYPE (type, type_index)->code ()
+                 if (type->field (type_index).type ()->code ()
                      == TYPE_CODE_STRUCT)
                    *cname = ANONYMOUS_STRUCT_NAME;
-                 else if (TYPE_FIELD_TYPE (type, type_index)->code ()
+                 else if (type->field (type_index).type ()->code ()
                           == TYPE_CODE_UNION)
                    *cname = ANONYMOUS_UNION_NAME;
                }
@@ -797,7 +795,7 @@ cplus_describe_child (const struct varobj *parent, int index,
            *cvalue = value_struct_element_index (value, type_index);
 
          if (ctype)
-           *ctype = TYPE_FIELD_TYPE (type, type_index);
+           *ctype = type->field (type_index).type ();
        }
       else if (index < TYPE_N_BASECLASSES (type))
        {
@@ -806,11 +804,11 @@ cplus_describe_child (const struct varobj *parent, int index,
            *cname = TYPE_FIELD_NAME (type, index);
 
          if (cvalue && value)
-           *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
+           *cvalue = value_cast (type->field (index).type (), value);
 
          if (ctype)
            {
-             *ctype = TYPE_FIELD_TYPE (type, index);
+             *ctype = type->field (index).type ();
            }
 
          if (cfull_expression)
@@ -819,10 +817,10 @@ cplus_describe_child (const struct varobj *parent, int index,
 
              /* Cast the parent to the base' type.  Note that in gdb,
                 expression like 
-                        (Base1)d
+                        (Base1)d
                 will create an lvalue, for all appearences, so we don't
                 need to use more fancy:
-                        *(Base1*)(&d)
+                        *(Base1*)(&d)
                 construct.
 
                 When we are in the scope of the base class or of one
This page took 0.026326 seconds and 4 git commands to generate.