mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
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:
parent
d84f2dd325
commit
63ed81829e
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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,
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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 -
|
||||
|
@ -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++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user