Make type-safe the 'content' field of struct tui_gen_win_info
authorPatrick Palka <patrick@parcs.ath.cx>
Fri, 24 Apr 2015 12:26:50 +0000 (08:26 -0400)
committerPatrick Palka <patrick@parcs.ath.cx>
Tue, 28 Apr 2015 01:19:53 +0000 (21:19 -0400)
The 'content' field of struct tui_gen_win_info currently has type
void ** but the field always stores an object of type tui_win_content.
Instead of unnecessarily casting to and from void ** we should just give
the field the type tui_win_content in the first place.

This patch does this and also eliminates all now-redundant casts
involving the 'content' struct field that I could find.

gdb/ChangeLog:

* tui/tui-data.h (struct tui_win_element): Forward-declare.
(tui_win_content): Move declaration.
(struct tui_gen_win_info): Give 'content' field the
type tui_win_content.
* tui/tui-data.c (init_content_element): Remove redundant and
erroneous casts.
(tui_add_content_elements): Remove erroneous cast.
* tui/tui-disasm.c (tui_set_disassem_content): Remove redundant
casts.
(tui_get_begin_asm_address): Likewise.
* tui/tui-regs.c (tui_show_registers): Likewise.
(tui_show_register_group): Likewise.
(tui_display_registers_from): Likewise.
(tui_check_register_values): Likewise.
* tui/tui-source.c (tui_set_source_content): Likewise.
(tui_set_source_content_nil): Likewise.
(tui_source_is_displayed): Likewise.
* tui/tui-stack.c (tui_show_locator_content): Likewise.
(tui_set_locator_fullname): Likewise.
(tui_set_locator_info): Likewise.
(tui_show_frame_info): Likewise.
* tui/tui-winsource.c (tui_clear_source_content): Likewise.
(tui_show_source_line): Likewise.
(tui_horizontal_source_scroll): Likewise.
(tui_update_breakpoint_info): Likewise.
(tui_set_exec_info_content): Likewise.
(tui_show_exec_info_content): Likewise.
(tui_alloc_source_buffer): Likewise.
(tui_line_is_displayed): Likewise.
(tui_addr_is_displayed): Likewise.

gdb/ChangeLog
gdb/tui/tui-data.c
gdb/tui/tui-data.h
gdb/tui/tui-disasm.c
gdb/tui/tui-regs.c
gdb/tui/tui-source.c
gdb/tui/tui-stack.c
gdb/tui/tui-winsource.c

index f21b358..44af045 100644 (file)
@@ -1,3 +1,36 @@
+2015-04-28  Patrick Palka  <patrick@parcs.ath.cx>
+
+       * tui/tui-data.h (struct tui_win_element): Forward-declare.
+       (tui_win_content): Move declaration.
+       (struct tui_gen_win_info): Give 'content' field the
+       type tui_win_content.
+       * tui/tui-data.c (init_content_element): Remove redundant and
+       erroneous casts.
+       (tui_add_content_elements): Remove erroneous cast.
+       * tui/tui-disasm.c (tui_set_disassem_content): Remove redundant
+       casts.
+       (tui_get_begin_asm_address): Likewise.
+       * tui/tui-regs.c (tui_show_registers): Likewise.
+       (tui_show_register_group): Likewise.
+       (tui_display_registers_from): Likewise.
+       (tui_check_register_values): Likewise.
+       * tui/tui-source.c (tui_set_source_content): Likewise.
+       (tui_set_source_content_nil): Likewise.
+       (tui_source_is_displayed): Likewise.
+       * tui/tui-stack.c (tui_show_locator_content): Likewise.
+       (tui_set_locator_fullname): Likewise.
+       (tui_set_locator_info): Likewise.
+       (tui_show_frame_info): Likewise.
+       * tui/tui-winsource.c (tui_clear_source_content): Likewise.
+       (tui_show_source_line): Likewise.
+       (tui_horizontal_source_scroll): Likewise.
+       (tui_update_breakpoint_info): Likewise.
+       (tui_set_exec_info_content): Likewise.
+       (tui_show_exec_info_content): Likewise.
+       (tui_alloc_source_buffer): Likewise.
+       (tui_line_is_displayed): Likewise.
+       (tui_addr_is_displayed): Likewise.
+
 2015-04-27  John Baldwin  <jhb@FreeBSD.org>
 
        * fbsd-nat.c: (fbsd_wait) [PL_FLAG_EXEC]: Report TARGET_WAITKIND_EXECD
index 43bcec2..44c1feb 100644 (file)
@@ -490,11 +490,9 @@ init_content_element (struct tui_win_element *element,
     case DATA_WIN:
       tui_init_generic_part (&element->which_element.data_window);
       element->which_element.data_window.type = DATA_ITEM_WIN;
-      ((struct tui_gen_win_info *)
-       &element->which_element.data_window)->content =
-       (void **) tui_alloc_content (1, DATA_ITEM_WIN);
-      ((struct tui_gen_win_info *)
-       & element->which_element.data_window)->content_size = 1;
+      element->which_element.data_window.content =
+       tui_alloc_content (1, DATA_ITEM_WIN);
+      element->which_element.data_window.content_size = 1;
       break;
     case CMD_WIN:
       element->which_element.command.line = (char *) NULL;
@@ -635,8 +633,7 @@ tui_add_content_elements (struct tui_gen_win_info *win_info,
 
   if (win_info->content == NULL)
     {
-      win_info->content = (void **) tui_alloc_content (num_elements,
-                                                      win_info->type);
+      win_info->content = tui_alloc_content (num_elements, win_info->type);
       index_start = 0;
     }
   else
index f87c45d..7651efd 100644 (file)
@@ -31,6 +31,11 @@ struct tui_point
   int x, y;
 };
 
+struct tui_win_element;
+
+/* This describes the content of the window.  */
+typedef struct tui_win_element **tui_win_content;
+
 /* Generic window information.  */
 struct tui_gen_win_info
 {
@@ -39,7 +44,7 @@ struct tui_gen_win_info
   int width;               /* Window width.  */
   int height;              /* Window height.  */
   struct tui_point origin;  /* Origin of window.  */
-  void **content;          /* Content of window.  */
+  tui_win_content content;  /* Content of window.  */
   int content_size;        /* Size of content (# of elements).  */
   int content_in_use;      /* Can it be used, or is it already used?  */
   int viewport_height;     /* Viewport height.  */
@@ -250,11 +255,6 @@ struct tui_win_element
   union tui_which_element which_element;
 };
 
-
-/* This describes the content of the window.  */
-typedef struct tui_win_element **tui_win_content;
-
-
 /* This struct defines the specific information about a data display
    window.  */
 struct tui_data_info
index 821a4f1..f86c216 100644 (file)
@@ -192,8 +192,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc)
   TUI_DISASM_WIN->detail.source_info.gdbarch = gdbarch;
   TUI_DISASM_WIN->detail.source_info.start_line_or_addr.loa = LOA_ADDRESS;
   TUI_DISASM_WIN->detail.source_info.start_line_or_addr.u.addr = pc;
-  cur_pc = (CORE_ADDR) (((struct tui_win_element *)
-                        locator->content[0])->which_element.locator.addr);
+  cur_pc = locator->content[0]->which_element.locator.addr;
 
   max_lines = TUI_DISASM_WIN->generic.height - 2;      /* Account for
                                                           hilite.  */
@@ -232,7 +231,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc)
       struct tui_source_element *src;
       int cur_len;
 
-      element = (struct tui_win_element *) TUI_DISASM_WIN->generic.content[i];
+      element = TUI_DISASM_WIN->generic.content[i];
       src = &element->which_element.source;
       strcpy (line, asm_lines[i].addr_string);
       cur_len = strlen (line);
@@ -334,8 +333,7 @@ tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
   CORE_ADDR addr;
 
   locator = tui_locator_win_info_ptr ();
-  element = &((struct tui_win_element *)
-             locator->content[0])->which_element.locator;
+  element = &locator->content[0]->which_element.locator;
 
   if (element->addr == 0)
     {
index feb11ba..61918f8 100644 (file)
@@ -171,7 +171,7 @@ tui_show_registers (struct reggroup *group)
 
          data_item_win = &display_info->regs_content[i]
             ->which_element.data_window;
-          win = (struct tui_win_element *) data_item_win->content[0];
+          win = data_item_win->content[0];
           win->which_element.data.highlight = FALSE;
        }
       display_info->current_group = group;
@@ -274,8 +274,7 @@ tui_show_register_group (struct reggroup *group,
 
          data_item_win =
             &display_info->regs_content[pos]->which_element.data_window;
-          data = &((struct tui_win_element *)
-                  data_item_win->content[0])->which_element.data;
+          data = &data_item_win->content[0]->which_element.data;
           if (data)
             {
               if (!refresh_values_only)
@@ -322,8 +321,7 @@ tui_display_registers_from (int start_element_no)
 
           data_item_win
            = &display_info->regs_content[i]->which_element.data_window;
-          data = &((struct tui_win_element *)
-                   data_item_win->content[0])->which_element.data;
+          data = &data_item_win->content[0]->which_element.data;
           len = 0;
           p = data->content;
           if (p != 0)
@@ -365,8 +363,7 @@ tui_display_registers_from (int start_element_no)
              /* Create the window if necessary.  */
              data_item_win = &display_info->regs_content[i]
                 ->which_element.data_window;
-             data_element_ptr = &((struct tui_win_element *)
-                                  data_item_win->content[0])->which_element.data;
+             data_element_ptr = &data_item_win->content[0]->which_element.data;
               if (data_item_win->handle != (WINDOW*) NULL
                   && (data_item_win->height != 1
                       || data_item_win->width != item_win_width
@@ -508,8 +505,7 @@ tui_check_register_values (struct frame_info *frame)
 
              data_item_win_ptr = &display_info->regs_content[i]->
                 which_element.data_window;
-             data = &((struct tui_win_element *)
-                       data_item_win_ptr->content[0])->which_element.data;
+             data = &data_item_win_ptr->content[0]->which_element.data;
              was_hilighted = data->highlight;
 
               tui_get_register (frame, data,
index 4070894..31df0c8 100644 (file)
@@ -120,16 +120,14 @@ tui_set_source_content (struct symtab *s,
                  while (cur_line < nlines)
                    {
                      struct tui_win_element *element
-                       = (struct tui_win_element *)
-                       TUI_SRC_WIN->generic.content[cur_line];
+                       = TUI_SRC_WIN->generic.content[cur_line];
 
                      /* Get the first character in the line.  */
                      c = fgetc (stream);
 
                      if (offset == 0)
-                       src_line = ((struct tui_win_element *)
-                                  TUI_SRC_WIN->generic.content[
-                                       cur_line])->which_element.source.line;
+                       src_line = TUI_SRC_WIN->generic.content[cur_line]
+                                    ->which_element.source.line;
                      /* Init the line with the line number.  */
                      sprintf (src_line, "%-6d", cur_line_no);
                      cur_len = strlen (src_line);
@@ -150,11 +148,12 @@ tui_set_source_content (struct symtab *s,
                      element->which_element.source.line_or_addr.u.line_no =
                        cur_line_no;
                      element->which_element.source.is_exec_point =
-                       (filename_cmp (((struct tui_win_element *)
-                                      locator->content[0])->which_element.locator.full_name,
+                       (filename_cmp (locator->content[0]
+                                        ->which_element.locator.full_name,
                                       symtab_to_fullname (s)) == 0
-                        && cur_line_no == ((struct tui_win_element *)
-                                           locator->content[0])->which_element.locator.line_no);
+                                        && cur_line_no
+                                             == locator->content[0]
+                                                  ->which_element.locator.line_no);
                      if (c != EOF)
                        {
                          i = strlen (src_line) - 1;
@@ -220,13 +219,12 @@ tui_set_source_content (struct symtab *s,
                      /* Now copy the line taking the offset into
                         account.  */
                      if (strlen (src_line) > offset)
-                       strcpy (((struct tui_win_element *)
-                                TUI_SRC_WIN->generic.content[cur_line])->which_element.source.line,
+                       strcpy (TUI_SRC_WIN->generic.content[cur_line]
+                                 ->which_element.source.line,
                                &src_line[offset]);
                      else
-                       ((struct tui_win_element *)
-                        TUI_SRC_WIN->generic.content[
-                         cur_line])->which_element.source.line[0] = (char) 0;
+                       TUI_SRC_WIN->generic.content[cur_line]
+                         ->which_element.source.line[0] = (char) 0;
                      cur_line++;
                      cur_line_no++;
                    }
@@ -268,8 +266,7 @@ tui_set_source_content_nil (struct tui_win_info *win_info,
          i.e. the line number is 0, there is no bp, it is not where
          the program is stopped.  */
 
-      struct tui_win_element *element =
-       (struct tui_win_element *) win_info->generic.content[curr_line];
+      struct tui_win_element *element = win_info->generic.content[curr_line];
 
       element->which_element.source.line_or_addr.loa = LOA_LINE;
       element->which_element.source.line_or_addr.u.line_no = 0;
@@ -337,9 +334,8 @@ tui_source_is_displayed (const char *fullname)
 {
   return (TUI_SRC_WIN != NULL
          && TUI_SRC_WIN->generic.content_in_use 
-         && (filename_cmp (((struct tui_win_element *)
-                            (tui_locator_win_info_ptr ())->
-                            content[0])->which_element.locator.full_name,
+         && (filename_cmp (tui_locator_win_info_ptr ()->content[0]
+                             ->which_element.locator.full_name,
                            fullname) == 0));
 }
 
index 13dd0b2..2870d70 100644 (file)
@@ -253,7 +253,7 @@ tui_show_locator_content (void)
     {
       struct tui_win_element *element;
 
-      element = (struct tui_win_element *) locator->content[0];
+      element = locator->content[0];
 
       string = tui_make_status_line (&element->which_element.locator);
       wmove (locator->handle, 0, 0);
@@ -287,8 +287,7 @@ tui_set_locator_fullname (const char *fullname)
       return;
     }
 
-  element = &((struct tui_win_element *)
-             locator->content[0])->which_element.locator;
+  element = &locator->content[0]->which_element.locator;
   element->full_name[0] = 0;
   strcat_to_buf (element->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
 }
@@ -307,12 +306,11 @@ tui_set_locator_info (struct gdbarch *gdbarch,
   /* Allocate the locator content if necessary.  */
   if (locator->content_size <= 0)
     {
-      locator->content = (void **) tui_alloc_content (1, locator->type);
+      locator->content = tui_alloc_content (1, locator->type);
       locator->content_size = 1;
     }
 
-  element = &((struct tui_win_element *)
-             locator->content[0])->which_element.locator;
+  element = &locator->content[0]->which_element.locator;
   element->proc_name[0] = (char) 0;
   strcat_to_buf (element->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname);
   element->line_no = lineno;
@@ -369,8 +367,7 @@ tui_show_frame_info (struct frame_info *fi)
 
          win_info = (tui_source_windows ())->list[i];
 
-         item = &((struct tui_win_element *)
-                  locator->content[0])->which_element;
+         item = &locator->content[0]->which_element;
          if (win_info == TUI_SRC_WIN)
            {
              start_line = (item->locator.line_no -
index 68eb4cf..63e0770 100644 (file)
@@ -219,8 +219,7 @@ tui_clear_source_content (struct tui_win_info *win_info,
       tui_erase_source_content (win_info, display_prompt);
       for (i = 0; i < win_info->generic.content_size; i++)
        {
-         struct tui_win_element *element =
-           (struct tui_win_element *) win_info->generic.content[i];
+         struct tui_win_element *element = win_info->generic.content[i];
 
          element->which_element.source.has_break = FALSE;
          element->which_element.source.is_exec_point = FALSE;
@@ -276,7 +275,7 @@ tui_show_source_line (struct tui_win_info *win_info, int lineno)
   struct tui_win_element *line;
   int x, y;
 
-  line = (struct tui_win_element *) win_info->generic.content[lineno - 1];
+  line = win_info->generic.content[lineno - 1];
   if (line->which_element.source.is_exec_point)
     wattron (win_info->generic.handle, A_STANDOUT);
 
@@ -348,8 +347,8 @@ tui_horizontal_source_scroll (struct tui_win_info *win_info,
        }
       win_info->detail.source_info.horizontal_offset = offset;
       tui_update_source_window_as_is (win_info, gdbarch, s,
-                                     ((struct tui_win_element *)
-                                      win_info->generic.content[0])->which_element.source.line_or_addr,
+                                     win_info->generic.content[0]
+                                       ->which_element.source.line_or_addr,
                                      FALSE);
     }
 
@@ -438,8 +437,7 @@ tui_update_breakpoint_info (struct tui_win_info *win,
       int mode;
       struct tui_source_element *line;
 
-      line = &((struct tui_win_element *)
-              win->generic.content[i])->which_element.source;
+      line = &win->generic.content[i]->which_element.source;
       if (current_only && !line->is_exec_point)
          continue;
 
@@ -507,8 +505,7 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
 
       if (exec_info_ptr->content == NULL)
        exec_info_ptr->content =
-         (void **) tui_alloc_content (win_info->generic.height,
-                                        exec_info_ptr->type);
+         tui_alloc_content (win_info->generic.height, exec_info_ptr->type);
       if (exec_info_ptr->content != NULL)
        {
          int i;
@@ -520,9 +517,8 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
              struct tui_win_element *src_element;
               int mode;
 
-             element = (struct tui_win_element *) exec_info_ptr->content[i];
-             src_element = (struct tui_win_element *)
-               win_info->generic.content[i];
+             element = exec_info_ptr->content[i];
+             src_element = win_info->generic.content[i];
 
               memset(element->which_element.simple_string, ' ',
                      sizeof(element->which_element.simple_string));
@@ -569,8 +565,7 @@ tui_show_exec_info_content (struct tui_win_info *win_info)
     mvwaddstr (exec_info->handle,
               cur_line,
               0,
-              ((struct tui_win_element *)
-               exec_info->content[cur_line - 1])->which_element.simple_string);
+              exec_info->content[cur_line - 1]->which_element.simple_string);
   tui_refresh_win (exec_info);
   exec_info->content_in_use = TRUE;
 }
@@ -628,8 +623,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info)
          return TUI_FAILURE;
        }
       /* Allocate the content list.  */
-      if ((win_info->generic.content =
-          (void **) tui_alloc_content (max_lines, SRC_WIN)) == NULL)
+      win_info->generic.content = tui_alloc_content (max_lines, SRC_WIN);
+      if (win_info->generic.content == NULL)
        {
          xfree (src_line_buf);
          fputs_unfiltered ("Unable to Allocate Memory for "
@@ -638,9 +633,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info)
          return TUI_FAILURE;
        }
       for (i = 0; i < max_lines; i++)
-       ((struct tui_win_element *)
-        win_info->generic.content[i])->which_element.source.line =
-         src_line_buf + (line_width * i);
+       win_info->generic.content[i]->which_element.source.line
+         = src_line_buf + (line_width * i);
     }
 
   return TUI_SUCCESS;
@@ -665,12 +659,11 @@ tui_line_is_displayed (int line,
   while (i < win_info->generic.content_size - threshold
         && !is_displayed)
     {
-      is_displayed = (((struct tui_win_element *)
-                      win_info->generic.content[i])->which_element.source.line_or_addr.loa
-                     == LOA_LINE)
-       && (((struct tui_win_element *)
-            win_info->generic.content[i])->which_element.source.line_or_addr.u.line_no
-           == (int) line);
+      is_displayed
+       = win_info->generic.content[i]
+           ->which_element.source.line_or_addr.loa == LOA_LINE
+         && win_info->generic.content[i]
+              ->which_element.source.line_or_addr.u.line_no == (int) line;
       i++;
     }
 
@@ -696,12 +689,11 @@ tui_addr_is_displayed (CORE_ADDR addr,
   while (i < win_info->generic.content_size - threshold
         && !is_displayed)
     {
-      is_displayed = (((struct tui_win_element *)
-                      win_info->generic.content[i])->which_element.source.line_or_addr.loa
-                     == LOA_ADDRESS)
-       && (((struct tui_win_element *)
-            win_info->generic.content[i])->which_element.source.line_or_addr.u.addr
-           == addr);
+      is_displayed
+       = win_info->generic.content[i]
+           ->which_element.source.line_or_addr.loa == LOA_ADDRESS
+         && win_info->generic.content[i]
+              ->which_element.source.line_or_addr.u.addr == addr;
       i++;
     }