/* Function to set the disassembly window's content. */
enum tui_status
-tui_set_disassem_content (tui_source_window_base *win_info,
- struct gdbarch *gdbarch, CORE_ADDR pc)
+tui_disasm_window::set_contents (struct gdbarch *arch,
+ struct symtab *s,
+ struct tui_line_or_address line_or_addr)
{
int i;
- int offset = win_info->horizontal_offset;
+ int offset = horizontal_offset;
int max_lines, line_width;
CORE_ADDR cur_pc;
struct tui_locator_window *locator = tui_locator_win_info_ptr ();
int addr_size, insn_size;
char *line;
+ gdb_assert (line_or_addr.loa == LOA_ADDRESS);
+ CORE_ADDR pc = line_or_addr.u.addr;
if (pc == 0)
return TUI_FAILURE;
- win_info->gdbarch = gdbarch;
- win_info->start_line_or_addr.loa = LOA_ADDRESS;
- win_info->start_line_or_addr.u.addr = pc;
+ gdbarch = arch;
+ start_line_or_addr.loa = LOA_ADDRESS;
+ start_line_or_addr.u.addr = pc;
cur_pc = locator->addr;
/* Window size, excluding highlight box. */
- max_lines = win_info->height - 2;
- line_width = win_info->width - 2;
+ max_lines = height - 2;
+ line_width = width - TUI_EXECINFO_SIZE - 2;
/* Get temporary table that will hold all strings (addr & insn). */
asm_lines = XALLOCAVEC (struct tui_asm_line, max_lines);
line = (char*) alloca (insn_pos + insn_size + 1);
/* Now construct each line. */
- win_info->content.resize (max_lines);
+ content.resize (max_lines);
for (i = 0; i < max_lines; i++)
{
int cur_len;
- tui_source_element *src = &win_info->content[i];
+ tui_source_element *src = &content[i];
strcpy (line, asm_lines[i].addr_string);
cur_len = strlen (line);
memset (line + cur_len, ' ', insn_pos - cur_len);
val.loa = LOA_ADDRESS;
val.u.addr = start_addr;
- tui_update_source_window (TUI_DISASM_WIN, gdbarch, s, val);
+ TUI_DISASM_WIN->update_source_window (gdbarch, s, val);
/* If the focus was in the src win, put it in the asm win, if the
source view isn't split. */
sal = find_pc_line (start_addr, 0);
val.loa = LOA_LINE;
val.u.line_no = sal.line;
- tui_update_source_window (TUI_SRC_WIN, gdbarch, sal.symtab, val);
+ TUI_SRC_WIN->update_source_window (gdbarch, sal.symtab, val);
if (sal.symtab)
{
set_current_source_symtab_and_line (sal);
val.loa = LOA_ADDRESS;
val.u.addr = tui_find_disassembly_address (gdbarch, pc, num_to_scroll);
- tui_update_source_window_as_is (this, gdbarch,
- NULL, val);
+ update_source_window_as_is (gdbarch, NULL, val);
}
}
a.loa = LOA_ADDRESS;
a.u.addr = low;
if (!addr_is_displayed (addr))
- tui_update_source_window (this, get_frame_arch (fi),
- sal.symtab, a);
+ update_source_window (get_frame_arch (fi), sal.symtab, a);
else
{
a.u.addr = addr;