****************************/
static enum tui_layout_type current_layout = UNDEFINED_LAYOUT;
static int term_height, term_width;
-static struct tui_gen_win_info _locator (LOCATOR_WIN);
-static struct tui_gen_win_info source_win (EXEC_INFO_WIN);
-static struct tui_gen_win_info disasm_win (EXEC_INFO_WIN);
+static struct tui_locator_window _locator;
static std::vector<tui_source_window_base *> source_windows;
static struct tui_win_info *win_with_focus = NULL;
static struct tui_layout_def layout_def = {
display_regs = false;
}
-/* Accessor for the source execution info ptr. */
-struct tui_gen_win_info *
-tui_source_exec_info_win_ptr (void)
-{
- return &source_win;
-}
-
-
-/* Accessor for the disassem execution info ptr. */
-struct tui_gen_win_info *
-tui_disassem_exec_info_win_ptr (void)
-{
- return &disasm_win;
-}
-
-
/* Accessor for the locator win info. Answers a pointer to the static
locator win info struct. */
-struct tui_gen_win_info *
+struct tui_locator_window *
tui_locator_win_info_ptr (void)
{
return &_locator;
{
if (tui_win_list[i] != 0)
{
- const char *cur_name = tui_win_name (tui_win_list[i]);
+ const char *cur_name = tui_win_list[i]->name ();
if (strlen (name) <= strlen (cur_name)
&& startswith (cur_name, name))
}
-/* Answer the name of the window. */
-const char *
-tui_win_name (const struct tui_gen_win_info *win_info)
-{
- const char *name = NULL;
-
- switch (win_info->type)
- {
- case SRC_WIN:
- name = SRC_NAME;
- break;
- case CMD_WIN:
- name = CMD_NAME;
- break;
- case DISASSEM_WIN:
- name = DISASSEM_NAME;
- break;
- case DATA_WIN:
- name = DATA_NAME;
- break;
- default:
- name = "";
- break;
- }
-
- return name;
-}
-
-
void
tui_initialize_static_data (void)
{
- tui_init_generic_part (tui_source_exec_info_win_ptr ());
- tui_init_generic_part (tui_disassem_exec_info_win_ptr ());
tui_init_generic_part (tui_locator_win_info_ptr ());
}
init_content_element (struct tui_win_element *element,
enum tui_win_type type)
{
+ gdb_assert (type != EXEC_INFO_WIN);
+ gdb_assert (type != LOCATOR_WIN);
+
switch (type)
{
case SRC_WIN:
element->which_element.data.highlight = FALSE;
element->which_element.data.content = NULL;
break;
- case LOCATOR_WIN:
- element->which_element.locator.full_name[0] =
- element->which_element.locator.proc_name[0] = (char) 0;
- element->which_element.locator.line_no = 0;
- element->which_element.locator.addr = 0;
- break;
- case EXEC_INFO_WIN:
- memset(element->which_element.simple_string, ' ',
- sizeof(element->which_element.simple_string));
- break;
default:
break;
}
start_line_or_addr.u.addr = 0;
}
-struct tui_win_info *
-tui_alloc_win_info (enum tui_win_type type)
-{
- switch (type)
- {
- case SRC_WIN:
- return new tui_source_window ();
-
- case DISASSEM_WIN:
- return new tui_disasm_window ();
-
- case DATA_WIN:
- return new tui_data_window ();
-
- case CMD_WIN:
- return new tui_cmd_window ();
- }
-
- gdb_assert_not_reached (_("Unhandled window type"));
-}
-
-
/* Allocates the content and elements in a block. */
tui_win_content
tui_alloc_content (int num_elements, enum tui_win_type type)
struct tui_win_element *element_block_ptr;
int i;
+ gdb_assert (type != EXEC_INFO_WIN);
+ gdb_assert (type != LOCATOR_WIN);
+
content = XNEWVEC (struct tui_win_element *, num_elements);
/*
return index_start;
}
-tui_source_window_base::~tui_source_window_base ()
+tui_gen_win_info::~tui_gen_win_info ()
{
- xfree (fullname);
- struct tui_gen_win_info *generic_win = execution_info;
- if (generic_win != NULL)
+ if (handle != NULL)
{
- tui_delete_win (generic_win->handle);
- generic_win->handle = NULL;
- tui_free_win_content (generic_win);
+ tui_delete_win (handle);
+ handle = NULL;
+ tui_free_win_content (this);
}
+ xfree (title);
+}
+
+tui_source_window_base::~tui_source_window_base ()
+{
+ xfree (fullname);
+ delete execution_info;
}
tui_data_window::~tui_data_window ()
}
}
-tui_win_info::~tui_win_info ()
-{
- if (handle != NULL)
- {
- tui_delete_win (handle);
- handle = NULL;
- tui_free_win_content (this);
- }
- if (title)
- xfree (title);
-}
-
-
void
tui_free_all_source_wins_content ()
{