56 int refresh_values_only);
60 int regnum,
int *changedp);
75 if (
TUI_DATA_WIN->detail.data_display_info.regs_content_count > 0)
77 num_lines = (
TUI_DATA_WIN->detail.data_display_info.regs_content_count /
78 TUI_DATA_WIN->detail.data_display_info.regs_column_count);
79 if (
TUI_DATA_WIN->detail.data_display_info.regs_content_count %
80 TUI_DATA_WIN->detail.data_display_info.regs_column_count)
93 if (element_no < TUI_DATA_WIN->detail.data_display_info.regs_content_count)
101 (
TUI_DATA_WIN->detail.data_display_info.regs_column_count * i))
119 if ((line_no *
TUI_DATA_WIN->detail.data_display_info.regs_column_count)
120 <=
TUI_DATA_WIN->detail.data_display_info.regs_content_count)
121 return ((line_no + 1) *
122 TUI_DATA_WIN->detail.data_display_info.regs_column_count) -
123 TUI_DATA_WIN->detail.data_display_info.regs_column_count;
175 win = data_item_win->
content[0];
191 int refresh_values_only)
196 int allocated_here = FALSE;
202 snprintf (title,
sizeof (title) - 1,
"Register group: %s",
223 if (name == 0 || *name ==
'\0')
239 allocated_here = TRUE;
240 refresh_values_only = FALSE;
245 if (!refresh_values_only || allocated_here)
273 if (name == 0 || *name ==
'\0')
281 if (!refresh_values_only)
312 int i = start_element_no;
313 int j, item_win_width, cur_y;
332 len = 8 * ((len / 8) + 1);
340 item_win_width = max_len + 1;
341 i = start_element_no;
353 while (i < display_info->regs_content_count
368 if (data_item_win->
handle != (WINDOW*) NULL
369 && (data_item_win->
height != 1
370 || data_item_win->
width != item_win_width
371 || data_item_win->
origin.
x != (item_win_width * j) + 1
372 || data_item_win->
origin.
y != cur_y))
375 data_item_win->
handle = 0;
378 if (data_item_win->
handle == (WINDOW *) NULL)
380 data_item_win->
height = 1;
381 data_item_win->
width = item_win_width;
382 data_item_win->
origin.
x = (item_win_width * j) + 1;
383 data_item_win->
origin.
y = cur_y;
385 scrollok (data_item_win->
handle, FALSE);
387 touchwin (data_item_win->
handle);
410 &&
TUI_DATA_WIN->detail.data_display_info.regs_content_count > 0)
412 int element_no = start_element_no;
414 if (start_element_no != 0 && start_line_no != 0)
416 int last_line_no, first_line_on_last_page;
419 first_line_on_last_page
421 if (first_line_on_last_page < 0)
422 first_line_on_last_page = 0;
428 if (
TUI_DATA_WIN->detail.data_display_info.data_content_count <= 0
429 && start_line_no > first_line_on_last_page)
446 if (
TUI_DATA_WIN->detail.data_display_info.regs_content_count > 0)
448 int line, element_no;
452 else if (force_display)
459 TUI_DATA_WIN->detail.data_display_info.regs_content_count - 1)) < 0)
470 <
TUI_DATA_WIN->detail.data_display_info.regs_content_count)
508 which_element.data_window;
530 if (win_info->
handle != (WINDOW *) NULL)
540 (void) wstandout (win_info->
handle);
542 wmove (win_info->
handle, 0, 0);
543 for (i = 1; i < win_info->
width; i++)
544 waddch (win_info->
handle,
' ');
545 wmove (win_info->
handle, 0, 0);
555 (void) wstandend (win_info->
handle);
571 group =
TUI_DATA_WIN->detail.data_display_info.current_group;
590 group =
TUI_DATA_WIN->detail.data_display_info.current_group;
609 struct reggroup *group, *match = NULL;
610 size_t len = strlen (args);
621 if (strncmp (args,
"next", len) == 0)
623 else if (strncmp (args,
"prev", len) == 0)
636 error (
_(
"ambiguous register group name '%s'"), args);
642 error (
_(
"unknown register group '%s'"), args);
652 "either a register group,\nor one of 'next' "
653 "or 'prev'. Known register groups are:\n"));
673 const char *text,
const char *
word)
676 static const char *extra[] = {
"next",
"prev", NULL };
677 size_t len = strlen (word);
680 result = reggroup_completer (ignore, text, word);
682 for (tmp = extra; *tmp != NULL; ++tmp)
684 if (strncmp (word, *tmp, len) == 0)
702 TUI command to control the register window."), tuicmd);
743 s = strrchr (p,
'\n');
761 int regnum,
int *changedp)
769 char *prev_content = data->
content;
774 && strcmp (prev_content, data->
content) != 0)
777 xfree (prev_content);
static void tui_restore_gdbout(void *ui)
#define target_has_registers
int tui_line_from_reg_element_no(int element_no)
char * tui_file_get_strbuf(struct ui_file *file)
struct tui_gen_win_info data_window
struct frame_info * get_selected_frame(const char *message)
static char * tui_register_format(struct frame_info *frame, int regnum)
int tui_display_registers_from_line(int line_no, int force_display)
struct reggroup * reggroup_prev(struct gdbarch *gdbarch, struct reggroup *curr)
void ui_file_delete(struct ui_file *file)
struct ui_file * gdb_stdout
void gdbarch_print_registers_info(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all)
tui_win_content regs_content
void tui_free_data_content(tui_win_content content, int content_size)
#define VEC_safe_push(T, V, O)
static enum tui_status tui_get_register(struct frame_info *frame, struct tui_data_element *data, int regnum, int *changedp)
int gdbarch_num_regs(struct gdbarch *gdbarch)
static struct reggroup * tui_reg_prev(struct gdbarch *gdbarch)
void tui_delete_win(WINDOW *window)
void tui_erase_data_content(char *prompt)
initialize_file_ftype _initialize_tui_regs
int gdbarch_num_pseudo_regs(struct gdbarch *gdbarch)
void tui_make_window(struct tui_gen_win_info *win_info, int box_it)
void tui_show_registers(struct reggroup *group)
struct reggroup *const general_reggroup
void tui_display_registers_from(int start_element_no)
void initialize_file_ftype(void)
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
int tui_last_regs_line_no(void)
tui_win_content tui_alloc_content(int num_elements, enum tui_win_type type)
struct ui_file * tui_sfileopen(int n)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, cmd_cfunc_ftype *fun, const char *doc, struct cmd_list_element **list)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
struct gdbarch * get_current_arch(void)
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
#define target_has_memory
void printf_unfiltered(const char *format,...)
static struct reggroup * tui_reg_next(struct gdbarch *gdbarch)
struct cmd_list_element ** tui_get_cmd_list(void)
static void tui_display_reg_element_at_line(int start_element_no, int start_line_no)
union tui_which_element which_element
int gdbarch_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup)
struct tui_win_element ** tui_win_content
int tui_add_content_elements(struct tui_gen_win_info *win_info, int num_elements)
char * tui_expand_tabs(const char *string, int col)
static enum tui_status tui_show_register_group(struct reggroup *group, struct frame_info *frame, int refresh_values_only)
static void tui_reg_command(char *args, int from_tty)
enum tui_status tui_set_layout_by_name(const char *layout_name)
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
void tui_display_all_data(void)
static void display_info(char *ignore, int from_tty)
void tui_refresh_win(struct tui_gen_win_info *win_info)
struct reggroup * reggroup_next(struct gdbarch *gdbarch, struct reggroup *last)
int tui_first_reg_element_no_inline(int line_no)
struct tui_data_element data
struct reggroup * current_group
void error(const char *fmt,...)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
const char * reggroup_name(struct reggroup *group)
void do_cleanups(struct cleanup *old_chain)
void tui_check_register_values(struct frame_info *frame)
static void tui_display_register(struct tui_data_element *data, struct tui_gen_win_info *win_info)
const ULONGEST const LONGEST len