+ gdbarch = NULL;
+ start_line_or_addr.loa = LOA_ADDRESS;
+ start_line_or_addr.u.addr = 0;
+ horizontal_offset = 0;
+}
+
+tui_source_window_base::tui_source_window_base (enum tui_win_type type)
+ : tui_win_info (type),
+ execution_info (new tui_exec_info_window ())
+{
+ gdb_assert (type == SRC_WIN || type == DISASSEM_WIN);
+ start_line_or_addr.loa = LOA_ADDRESS;
+ start_line_or_addr.u.addr = 0;
+}
+
+
+tui_source_window_base::~tui_source_window_base ()
+{
+ xfree (fullname);
+ delete execution_info;
+}
+
+void
+tui_source_window_base::reset (int height, int width,
+ int origin_x, int origin_y)
+{
+ tui_gen_win_info::reset (height, width - 3,
+ origin_x + 3, origin_y);
+ execution_info->reset (height, 3, origin_x, origin_y);
+}
+
+/* See tui-data.h. */
+
+void
+tui_source_window_base::refresh_all ()
+{
+ show_source_content ();
+ check_and_display_highlight_if_needed ();
+ tui_erase_exec_info_content (this);
+ update_exec_info ();
+}
+
+/* See tui-data.h. */
+
+void
+tui_source_window_base::update_tab_width ()
+{
+ /* We don't really change the height of any windows, but
+ calling these 2 functions causes a complete regeneration
+ and redisplay of the window's contents, which will take
+ the new tab width into account. */
+ make_invisible_and_set_new_height (height);
+ make_visible_with_new_height ();
+}
+
+/* See tui-data.h. */
+
+void
+tui_source_window_base::set_new_height (int height)
+{
+ execution_info->make_visible (false);
+ execution_info->height = height;
+ execution_info->origin.y = origin.y;
+ if (height > 1)
+ execution_info->viewport_height = height - 1;
+ else
+ execution_info->viewport_height = height;
+ execution_info->viewport_height--;
+
+ if (m_has_locator)