Make type-safe the 'content' field of struct tui_gen_win_info

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.
This commit is contained in:
Patrick Palka
2015-04-24 08:26:50 -04:00
parent d84f2dd325
commit 63ed81829e
8 changed files with 94 additions and 85 deletions

View 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> 2015-04-27 John Baldwin <jhb@FreeBSD.org>
* fbsd-nat.c: (fbsd_wait) [PL_FLAG_EXEC]: Report TARGET_WAITKIND_EXECD * fbsd-nat.c: (fbsd_wait) [PL_FLAG_EXEC]: Report TARGET_WAITKIND_EXECD

View File

@ -490,11 +490,9 @@ init_content_element (struct tui_win_element *element,
case DATA_WIN: case DATA_WIN:
tui_init_generic_part (&element->which_element.data_window); tui_init_generic_part (&element->which_element.data_window);
element->which_element.data_window.type = DATA_ITEM_WIN; element->which_element.data_window.type = DATA_ITEM_WIN;
((struct tui_gen_win_info *) element->which_element.data_window.content =
&element->which_element.data_window)->content = tui_alloc_content (1, DATA_ITEM_WIN);
(void **) tui_alloc_content (1, DATA_ITEM_WIN); element->which_element.data_window.content_size = 1;
((struct tui_gen_win_info *)
& element->which_element.data_window)->content_size = 1;
break; break;
case CMD_WIN: case CMD_WIN:
element->which_element.command.line = (char *) NULL; 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) if (win_info->content == NULL)
{ {
win_info->content = (void **) tui_alloc_content (num_elements, win_info->content = tui_alloc_content (num_elements, win_info->type);
win_info->type);
index_start = 0; index_start = 0;
} }
else else

View File

@ -31,6 +31,11 @@ struct tui_point
int x, y; 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. */ /* Generic window information. */
struct tui_gen_win_info struct tui_gen_win_info
{ {
@ -39,7 +44,7 @@ struct tui_gen_win_info
int width; /* Window width. */ int width; /* Window width. */
int height; /* Window height. */ int height; /* Window height. */
struct tui_point origin; /* Origin of window. */ 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_size; /* Size of content (# of elements). */
int content_in_use; /* Can it be used, or is it already used? */ int content_in_use; /* Can it be used, or is it already used? */
int viewport_height; /* Viewport height. */ int viewport_height; /* Viewport height. */
@ -250,11 +255,6 @@ struct tui_win_element
union tui_which_element which_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 /* This struct defines the specific information about a data display
window. */ window. */
struct tui_data_info struct tui_data_info

View 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.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.loa = LOA_ADDRESS;
TUI_DISASM_WIN->detail.source_info.start_line_or_addr.u.addr = pc; TUI_DISASM_WIN->detail.source_info.start_line_or_addr.u.addr = pc;
cur_pc = (CORE_ADDR) (((struct tui_win_element *) cur_pc = locator->content[0]->which_element.locator.addr;
locator->content[0])->which_element.locator.addr);
max_lines = TUI_DISASM_WIN->generic.height - 2; /* Account for max_lines = TUI_DISASM_WIN->generic.height - 2; /* Account for
hilite. */ hilite. */
@ -232,7 +231,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc)
struct tui_source_element *src; struct tui_source_element *src;
int cur_len; 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; src = &element->which_element.source;
strcpy (line, asm_lines[i].addr_string); strcpy (line, asm_lines[i].addr_string);
cur_len = strlen (line); cur_len = strlen (line);
@ -334,8 +333,7 @@ tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
CORE_ADDR addr; CORE_ADDR addr;
locator = tui_locator_win_info_ptr (); locator = tui_locator_win_info_ptr ();
element = &((struct tui_win_element *) element = &locator->content[0]->which_element.locator;
locator->content[0])->which_element.locator;
if (element->addr == 0) if (element->addr == 0)
{ {

View File

@ -171,7 +171,7 @@ tui_show_registers (struct reggroup *group)
data_item_win = &display_info->regs_content[i] data_item_win = &display_info->regs_content[i]
->which_element.data_window; ->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; win->which_element.data.highlight = FALSE;
} }
display_info->current_group = group; display_info->current_group = group;
@ -274,8 +274,7 @@ tui_show_register_group (struct reggroup *group,
data_item_win = data_item_win =
&display_info->regs_content[pos]->which_element.data_window; &display_info->regs_content[pos]->which_element.data_window;
data = &((struct tui_win_element *) data = &data_item_win->content[0]->which_element.data;
data_item_win->content[0])->which_element.data;
if (data) if (data)
{ {
if (!refresh_values_only) if (!refresh_values_only)
@ -322,8 +321,7 @@ tui_display_registers_from (int start_element_no)
data_item_win data_item_win
= &display_info->regs_content[i]->which_element.data_window; = &display_info->regs_content[i]->which_element.data_window;
data = &((struct tui_win_element *) data = &data_item_win->content[0]->which_element.data;
data_item_win->content[0])->which_element.data;
len = 0; len = 0;
p = data->content; p = data->content;
if (p != 0) if (p != 0)
@ -365,8 +363,7 @@ tui_display_registers_from (int start_element_no)
/* Create the window if necessary. */ /* Create the window if necessary. */
data_item_win = &display_info->regs_content[i] data_item_win = &display_info->regs_content[i]
->which_element.data_window; ->which_element.data_window;
data_element_ptr = &((struct tui_win_element *) data_element_ptr = &data_item_win->content[0]->which_element.data;
data_item_win->content[0])->which_element.data;
if (data_item_win->handle != (WINDOW*) NULL if (data_item_win->handle != (WINDOW*) NULL
&& (data_item_win->height != 1 && (data_item_win->height != 1
|| data_item_win->width != item_win_width || 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]-> data_item_win_ptr = &display_info->regs_content[i]->
which_element.data_window; which_element.data_window;
data = &((struct tui_win_element *) data = &data_item_win_ptr->content[0]->which_element.data;
data_item_win_ptr->content[0])->which_element.data;
was_hilighted = data->highlight; was_hilighted = data->highlight;
tui_get_register (frame, data, tui_get_register (frame, data,

View File

@ -120,16 +120,14 @@ tui_set_source_content (struct symtab *s,
while (cur_line < nlines) while (cur_line < nlines)
{ {
struct tui_win_element *element 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. */ /* Get the first character in the line. */
c = fgetc (stream); c = fgetc (stream);
if (offset == 0) if (offset == 0)
src_line = ((struct tui_win_element *) src_line = TUI_SRC_WIN->generic.content[cur_line]
TUI_SRC_WIN->generic.content[ ->which_element.source.line;
cur_line])->which_element.source.line;
/* Init the line with the line number. */ /* Init the line with the line number. */
sprintf (src_line, "%-6d", cur_line_no); sprintf (src_line, "%-6d", cur_line_no);
cur_len = strlen (src_line); 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 = element->which_element.source.line_or_addr.u.line_no =
cur_line_no; cur_line_no;
element->which_element.source.is_exec_point = element->which_element.source.is_exec_point =
(filename_cmp (((struct tui_win_element *) (filename_cmp (locator->content[0]
locator->content[0])->which_element.locator.full_name, ->which_element.locator.full_name,
symtab_to_fullname (s)) == 0 symtab_to_fullname (s)) == 0
&& cur_line_no == ((struct tui_win_element *) && cur_line_no
locator->content[0])->which_element.locator.line_no); == locator->content[0]
->which_element.locator.line_no);
if (c != EOF) if (c != EOF)
{ {
i = strlen (src_line) - 1; i = strlen (src_line) - 1;
@ -220,13 +219,12 @@ tui_set_source_content (struct symtab *s,
/* Now copy the line taking the offset into /* Now copy the line taking the offset into
account. */ account. */
if (strlen (src_line) > offset) if (strlen (src_line) > offset)
strcpy (((struct tui_win_element *) strcpy (TUI_SRC_WIN->generic.content[cur_line]
TUI_SRC_WIN->generic.content[cur_line])->which_element.source.line, ->which_element.source.line,
&src_line[offset]); &src_line[offset]);
else else
((struct tui_win_element *) TUI_SRC_WIN->generic.content[cur_line]
TUI_SRC_WIN->generic.content[ ->which_element.source.line[0] = (char) 0;
cur_line])->which_element.source.line[0] = (char) 0;
cur_line++; cur_line++;
cur_line_no++; 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 i.e. the line number is 0, there is no bp, it is not where
the program is stopped. */ the program is stopped. */
struct tui_win_element *element = struct tui_win_element *element = win_info->generic.content[curr_line];
(struct tui_win_element *) win_info->generic.content[curr_line];
element->which_element.source.line_or_addr.loa = LOA_LINE; element->which_element.source.line_or_addr.loa = LOA_LINE;
element->which_element.source.line_or_addr.u.line_no = 0; 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 return (TUI_SRC_WIN != NULL
&& TUI_SRC_WIN->generic.content_in_use && TUI_SRC_WIN->generic.content_in_use
&& (filename_cmp (((struct tui_win_element *) && (filename_cmp (tui_locator_win_info_ptr ()->content[0]
(tui_locator_win_info_ptr ())-> ->which_element.locator.full_name,
content[0])->which_element.locator.full_name,
fullname) == 0)); fullname) == 0));
} }

View File

@ -253,7 +253,7 @@ tui_show_locator_content (void)
{ {
struct tui_win_element *element; 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); string = tui_make_status_line (&element->which_element.locator);
wmove (locator->handle, 0, 0); wmove (locator->handle, 0, 0);
@ -287,8 +287,7 @@ tui_set_locator_fullname (const char *fullname)
return; return;
} }
element = &((struct tui_win_element *) element = &locator->content[0]->which_element.locator;
locator->content[0])->which_element.locator;
element->full_name[0] = 0; element->full_name[0] = 0;
strcat_to_buf (element->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname); 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. */ /* Allocate the locator content if necessary. */
if (locator->content_size <= 0) 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; locator->content_size = 1;
} }
element = &((struct tui_win_element *) element = &locator->content[0]->which_element.locator;
locator->content[0])->which_element.locator;
element->proc_name[0] = (char) 0; element->proc_name[0] = (char) 0;
strcat_to_buf (element->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname); strcat_to_buf (element->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname);
element->line_no = lineno; element->line_no = lineno;
@ -369,8 +367,7 @@ tui_show_frame_info (struct frame_info *fi)
win_info = (tui_source_windows ())->list[i]; win_info = (tui_source_windows ())->list[i];
item = &((struct tui_win_element *) item = &locator->content[0]->which_element;
locator->content[0])->which_element;
if (win_info == TUI_SRC_WIN) if (win_info == TUI_SRC_WIN)
{ {
start_line = (item->locator.line_no - start_line = (item->locator.line_no -

View File

@ -219,8 +219,7 @@ tui_clear_source_content (struct tui_win_info *win_info,
tui_erase_source_content (win_info, display_prompt); tui_erase_source_content (win_info, display_prompt);
for (i = 0; i < win_info->generic.content_size; i++) for (i = 0; i < win_info->generic.content_size; i++)
{ {
struct tui_win_element *element = struct tui_win_element *element = win_info->generic.content[i];
(struct tui_win_element *) win_info->generic.content[i];
element->which_element.source.has_break = FALSE; element->which_element.source.has_break = FALSE;
element->which_element.source.is_exec_point = 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; struct tui_win_element *line;
int x, y; 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) if (line->which_element.source.is_exec_point)
wattron (win_info->generic.handle, A_STANDOUT); 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; win_info->detail.source_info.horizontal_offset = offset;
tui_update_source_window_as_is (win_info, gdbarch, s, tui_update_source_window_as_is (win_info, gdbarch, s,
((struct tui_win_element *) win_info->generic.content[0]
win_info->generic.content[0])->which_element.source.line_or_addr, ->which_element.source.line_or_addr,
FALSE); FALSE);
} }
@ -438,8 +437,7 @@ tui_update_breakpoint_info (struct tui_win_info *win,
int mode; int mode;
struct tui_source_element *line; struct tui_source_element *line;
line = &((struct tui_win_element *) line = &win->generic.content[i]->which_element.source;
win->generic.content[i])->which_element.source;
if (current_only && !line->is_exec_point) if (current_only && !line->is_exec_point)
continue; continue;
@ -507,8 +505,7 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
if (exec_info_ptr->content == NULL) if (exec_info_ptr->content == NULL)
exec_info_ptr->content = exec_info_ptr->content =
(void **) tui_alloc_content (win_info->generic.height, tui_alloc_content (win_info->generic.height, exec_info_ptr->type);
exec_info_ptr->type);
if (exec_info_ptr->content != NULL) if (exec_info_ptr->content != NULL)
{ {
int i; int i;
@ -520,9 +517,8 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
struct tui_win_element *src_element; struct tui_win_element *src_element;
int mode; int mode;
element = (struct tui_win_element *) exec_info_ptr->content[i]; element = exec_info_ptr->content[i];
src_element = (struct tui_win_element *) src_element = win_info->generic.content[i];
win_info->generic.content[i];
memset(element->which_element.simple_string, ' ', memset(element->which_element.simple_string, ' ',
sizeof(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, mvwaddstr (exec_info->handle,
cur_line, cur_line,
0, 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); tui_refresh_win (exec_info);
exec_info->content_in_use = TRUE; exec_info->content_in_use = TRUE;
} }
@ -628,8 +623,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info)
return TUI_FAILURE; return TUI_FAILURE;
} }
/* Allocate the content list. */ /* Allocate the content list. */
if ((win_info->generic.content = win_info->generic.content = tui_alloc_content (max_lines, SRC_WIN);
(void **) tui_alloc_content (max_lines, SRC_WIN)) == NULL) if (win_info->generic.content == NULL)
{ {
xfree (src_line_buf); xfree (src_line_buf);
fputs_unfiltered ("Unable to Allocate Memory for " fputs_unfiltered ("Unable to Allocate Memory for "
@ -638,9 +633,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info)
return TUI_FAILURE; return TUI_FAILURE;
} }
for (i = 0; i < max_lines; i++) for (i = 0; i < max_lines; i++)
((struct tui_win_element *) win_info->generic.content[i]->which_element.source.line
win_info->generic.content[i])->which_element.source.line = = src_line_buf + (line_width * i);
src_line_buf + (line_width * i);
} }
return TUI_SUCCESS; return TUI_SUCCESS;
@ -665,12 +659,11 @@ tui_line_is_displayed (int line,
while (i < win_info->generic.content_size - threshold while (i < win_info->generic.content_size - threshold
&& !is_displayed) && !is_displayed)
{ {
is_displayed = (((struct tui_win_element *) is_displayed
win_info->generic.content[i])->which_element.source.line_or_addr.loa = win_info->generic.content[i]
== LOA_LINE) ->which_element.source.line_or_addr.loa == LOA_LINE
&& (((struct tui_win_element *) && win_info->generic.content[i]
win_info->generic.content[i])->which_element.source.line_or_addr.u.line_no ->which_element.source.line_or_addr.u.line_no == (int) line;
== (int) line);
i++; i++;
} }
@ -696,12 +689,11 @@ tui_addr_is_displayed (CORE_ADDR addr,
while (i < win_info->generic.content_size - threshold while (i < win_info->generic.content_size - threshold
&& !is_displayed) && !is_displayed)
{ {
is_displayed = (((struct tui_win_element *) is_displayed
win_info->generic.content[i])->which_element.source.line_or_addr.loa = win_info->generic.content[i]
== LOA_ADDRESS) ->which_element.source.line_or_addr.loa == LOA_ADDRESS
&& (((struct tui_win_element *) && win_info->generic.content[i]
win_info->generic.content[i])->which_element.source.line_or_addr.u.addr ->which_element.source.line_or_addr.u.addr == addr;
== addr);
i++; i++;
} }