gdb: add field::type / field::set_type
[deliverable/binutils-gdb.git] / gdb / mdebugread.c
index 1b499ccad34c47e66c7a28070f4d945aa0a92401..07613a5b356d7bc012c7cc728585ba5dd7b0025c 100644 (file)
@@ -1018,9 +1018,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
        t->set_code (type_code);
        TYPE_LENGTH (t) = sh->value;
        t->set_num_fields (nfields);
-       TYPE_FIELDS (t) = f = ((struct field *)
-                              TYPE_ALLOC (t,
-                                          nfields * sizeof (struct field)));
+       f = ((struct field *) TYPE_ALLOC (t, nfields * sizeof (struct field)));
+       t->set_fields (f);
 
        if (type_code == TYPE_CODE_ENUM)
          {
@@ -1036,7 +1035,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
               are hopefully rare enough.
               Alpha cc -migrate has a sh.value field of zero, we adjust
               that too.  */
-           if (TYPE_LENGTH (t) == TYPE_NFIELDS (t)
+           if (TYPE_LENGTH (t) == t->num_fields ()
                || TYPE_LENGTH (t) == 0)
              TYPE_LENGTH (t) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
            for (ext_tsym = ext_sh + external_sym_size;
@@ -1052,7 +1051,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
                  break;
 
                SET_FIELD_ENUMVAL (*f, tsym.value);
-               FIELD_TYPE (*f) = t;
+               f->set_type (t);
                FIELD_NAME (*f) = debug_info->ss + cur_fdr->issBase + tsym.iss;
                FIELD_BITSIZE (*f) = 0;
 
@@ -1085,7 +1084,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
        /* gcc puts out an empty struct for an opaque struct definitions,
           do not create a symbol for it either.  */
-       if (TYPE_NFIELDS (t) == 0)
+       if (t->num_fields () == 0)
          {
            TYPE_STUB (t) = 1;
            break;
@@ -1174,7 +1173,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
                }
            }
 
-         if (TYPE_NFIELDS (ftype) <= 0)
+         if (ftype->num_fields () <= 0)
            {
              /* No parameter type information is recorded with the function's
                 type.  Set that from the type of the parameter symbols.  */
@@ -1187,8 +1186,9 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
                  struct block_iterator iter;
 
                  ftype->set_num_fields (nparams);
-                 TYPE_FIELDS (ftype) = (struct field *)
-                   TYPE_ALLOC (ftype, nparams * sizeof (struct field));
+                 ftype->set_fields
+                   ((struct field *)
+                    TYPE_ALLOC (ftype, nparams * sizeof (struct field)));
 
                  iparams = 0;
                  ALL_BLOCK_SYMBOLS (cblock, iter, sym)
@@ -1198,7 +1198,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
                      if (SYMBOL_IS_ARGUMENT (sym))
                        {
-                         TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
+                         ftype->field (iparams).set_type (SYMBOL_TYPE (sym));
                          TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
                          iparams++;
                        }
@@ -1233,13 +1233,13 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
     case stMember:             /* member of struct or union */
       {
-       struct field *f
-         = &TYPE_FIELDS (top_stack->cur_type)[top_stack->cur_field++];
+       struct field *f = &top_stack->cur_type->field (top_stack->cur_field);
+       top_stack->cur_field++;
        FIELD_NAME (*f) = name;
        SET_FIELD_BITPOS (*f, sh->value);
        bitsize = 0;
-       FIELD_TYPE (*f) = parse_type (cur_fd, ax, sh->index,
-                                     &bitsize, bigend, name);
+       f->set_type (parse_type (cur_fd, ax, sh->index, &bitsize, bigend,
+                                name));
        FIELD_BITSIZE (*f) = bitsize;
       }
       break;
@@ -1297,7 +1297,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
       /* Incomplete definitions of structs should not get a name.  */
       if (SYMBOL_TYPE (s)->name () == NULL
-         && (TYPE_NFIELDS (SYMBOL_TYPE (s)) != 0
+         && (SYMBOL_TYPE (s)->num_fields () != 0
              || (SYMBOL_TYPE (s)->code () != TYPE_CODE_STRUCT
                  && SYMBOL_TYPE (s)->code () != TYPE_CODE_UNION)))
        {
This page took 0.026928 seconds and 4 git commands to generate.