Inline constructors and initializers
[deliverable/binutils-gdb.git] / gdb / tui / tui-win.c
index 225c6e9d4b32a51339be064a9a56df62c85160cf..9c4f9ad57790a9db80651b95b8751724274e6423 100644 (file)
@@ -1,6 +1,6 @@
 /* TUI window generic functions.
 
-   Copyright (C) 1998-2018 Free Software Foundation, Inc.
+   Copyright (C) 1998-2019 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -430,113 +430,6 @@ winheight_completer (struct cmd_list_element *ignore,
   window_name_completer (tracker, 0, text, word);
 }
 
-/* Function to initialize gdb commands, for tui window
-   manipulation.  */
-
-void
-_initialize_tui_win (void)
-{
-  static struct cmd_list_element *tui_setlist;
-  static struct cmd_list_element *tui_showlist;
-  struct cmd_list_element *cmd;
-
-  /* Define the classes of commands.
-     They will appear in the help list in the reverse of this order.  */
-  add_prefix_cmd ("tui", class_tui, set_tui_cmd,
-                  _("TUI configuration variables"),
-                 &tui_setlist, "set tui ",
-                 0 /* allow-unknown */, &setlist);
-  add_prefix_cmd ("tui", class_tui, show_tui_cmd,
-                  _("TUI configuration variables"),
-                 &tui_showlist, "show tui ",
-                 0 /* allow-unknown */, &showlist);
-
-  add_com ("refresh", class_tui, tui_refresh_all_command,
-           _("Refresh the terminal display.\n"));
-  add_com ("tabset", class_tui, tui_set_tab_width_command, _("\
-Set the width (in characters) of tab stops.\n\
-Usage: tabset N\n"));
-  cmd = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
-Set or modify the height of a specified window.\n"
-WIN_HEIGHT_USAGE
-"Window names are:\n\
-src  : the source window\n\
-cmd  : the command window\n\
-asm  : the disassembly window\n\
-regs : the register display\n"));
-  add_com_alias ("wh", "winheight", class_tui, 0);
-  set_cmd_completer (cmd, winheight_completer);
-  add_info ("win", tui_all_windows_info,
-           _("List of all displayed windows.\n"));
-  cmd = add_com ("focus", class_tui, tui_set_focus_command, _("\
-Set focus to named window or next/prev window.\n"
-FOCUS_USAGE
-"Valid Window names are:\n\
-src  : the source window\n\
-asm  : the disassembly window\n\
-regs : the register display\n\
-cmd  : the command window\n"));
-  add_com_alias ("fs", "focus", class_tui, 0);
-  set_cmd_completer (cmd, focus_completer);
-  add_com ("+", class_tui, tui_scroll_forward_command, _("\
-Scroll window forward.\n\
-Usage: + [WIN] [N]\n"));
-  add_com ("-", class_tui, tui_scroll_backward_command, _("\
-Scroll window backward.\n\
-Usage: - [WIN] [N]\n"));
-  add_com ("<", class_tui, tui_scroll_left_command, _("\
-Scroll window text to the left.\n\
-Usage: < [WIN] [N]\n"));
-  add_com (">", class_tui, tui_scroll_right_command, _("\
-Scroll window text to the right.\n\
-Usage: > [WIN] [N]\n"));
-
-  /* Define the tui control variables.  */
-  add_setshow_enum_cmd ("border-kind", no_class, tui_border_kind_enums,
-                       &tui_border_kind, _("\
-Set the kind of border for TUI windows."), _("\
-Show the kind of border for TUI windows."), _("\
-This variable controls the border of TUI windows:\n\
-space           use a white space\n\
-ascii           use ascii characters + - | for the border\n\
-acs             use the Alternate Character Set"),
-                       tui_set_var_cmd,
-                       show_tui_border_kind,
-                       &tui_setlist, &tui_showlist);
-
-  add_setshow_enum_cmd ("border-mode", no_class, tui_border_mode_enums,
-                       &tui_border_mode, _("\
-Set the attribute mode to use for the TUI window borders."), _("\
-Show the attribute mode to use for the TUI window borders."), _("\
-This variable controls the attributes to use for the window borders:\n\
-normal          normal display\n\
-standout        use highlight mode of terminal\n\
-reverse         use reverse video mode\n\
-half            use half bright\n\
-half-standout   use half bright and standout mode\n\
-bold            use extra bright or bold\n\
-bold-standout   use extra bright or bold with standout mode"),
-                       tui_set_var_cmd,
-                       show_tui_border_mode,
-                       &tui_setlist, &tui_showlist);
-
-  add_setshow_enum_cmd ("active-border-mode", no_class, tui_border_mode_enums,
-                       &tui_active_border_mode, _("\
-Set the attribute mode to use for the active TUI window border."), _("\
-Show the attribute mode to use for the active TUI window border."), _("\
-This variable controls the attributes to use for the active window border:\n\
-normal          normal display\n\
-standout        use highlight mode of terminal\n\
-reverse         use reverse video mode\n\
-half            use half bright\n\
-half-standout   use half bright and standout mode\n\
-bold            use extra bright or bold\n\
-bold-standout   use extra bright or bold with standout mode"),
-                       tui_set_var_cmd,
-                       show_tui_active_border_mode,
-                       &tui_setlist, &tui_showlist);
-}
-
 /* Update gdb's knowledge of the terminal size.  */
 void
 tui_update_gdb_sizes (void)
@@ -577,125 +470,41 @@ tui_set_win_focus_to (struct tui_win_info *win_info)
 
 
 void
-tui_scroll_forward (struct tui_win_info *win_to_scroll, 
-                   int num_to_scroll)
+tui_win_info::forward_scroll (int num_to_scroll)
 {
-  if (win_to_scroll != TUI_CMD_WIN)
-    {
-      int _num_to_scroll = num_to_scroll;
-
-      if (num_to_scroll == 0)
-       _num_to_scroll = win_to_scroll->generic.height - 3;
-
-      /* If we are scrolling the source or disassembly window, do a
-         "psuedo" scroll since not all of the source is in memory,
-         only what is in the viewport.  If win_to_scroll is the
-         command window do nothing since the term should handle
-         it.  */
-      if (win_to_scroll == TUI_SRC_WIN)
-       tui_vertical_source_scroll (FORWARD_SCROLL, _num_to_scroll);
-      else if (win_to_scroll == TUI_DISASM_WIN)
-       tui_vertical_disassem_scroll (FORWARD_SCROLL, _num_to_scroll);
-      else if (win_to_scroll == TUI_DATA_WIN)
-       tui_vertical_data_scroll (FORWARD_SCROLL, _num_to_scroll);
-    }
-}
+  if (num_to_scroll == 0)
+    num_to_scroll = generic.height - 3;
 
-void
-tui_scroll_backward (struct tui_win_info *win_to_scroll, 
-                    int num_to_scroll)
-{
-  if (win_to_scroll != TUI_CMD_WIN)
-    {
-      int _num_to_scroll = num_to_scroll;
-
-      if (num_to_scroll == 0)
-       _num_to_scroll = win_to_scroll->generic.height - 3;
-
-      /* If we are scrolling the source or disassembly window, do a
-         "psuedo" scroll since not all of the source is in memory,
-         only what is in the viewport.  If win_to_scroll is the
-         command window do nothing since the term should handle
-         it.  */
-      if (win_to_scroll == TUI_SRC_WIN)
-       tui_vertical_source_scroll (BACKWARD_SCROLL, _num_to_scroll);
-      else if (win_to_scroll == TUI_DISASM_WIN)
-       tui_vertical_disassem_scroll (BACKWARD_SCROLL, _num_to_scroll);
-      else if (win_to_scroll == TUI_DATA_WIN)
-       tui_vertical_data_scroll (BACKWARD_SCROLL, _num_to_scroll);
-    }
+  do_scroll_vertical (FORWARD_SCROLL, num_to_scroll);
 }
 
-
 void
-tui_scroll_left (struct tui_win_info *win_to_scroll,
-                int num_to_scroll)
+tui_win_info::backward_scroll (int num_to_scroll)
 {
-  if (win_to_scroll != TUI_CMD_WIN)
-    {
-      int _num_to_scroll = num_to_scroll;
-
-      if (_num_to_scroll == 0)
-       _num_to_scroll = 1;
-
-      /* If we are scrolling the source or disassembly window, do a
-         "psuedo" scroll since not all of the source is in memory,
-         only what is in the viewport. If win_to_scroll is the command
-         window do nothing since the term should handle it.  */
-      if (win_to_scroll == TUI_SRC_WIN
-         || win_to_scroll == TUI_DISASM_WIN)
-       tui_horizontal_source_scroll (win_to_scroll, LEFT_SCROLL,
-                                     _num_to_scroll);
-    }
+  if (num_to_scroll == 0)
+    num_to_scroll = generic.height - 3;
+
+  do_scroll_vertical (BACKWARD_SCROLL, num_to_scroll);
 }
 
 
 void
-tui_scroll_right (struct tui_win_info *win_to_scroll, 
-                 int num_to_scroll)
+tui_win_info::left_scroll (int num_to_scroll)
 {
-  if (win_to_scroll != TUI_CMD_WIN)
-    {
-      int _num_to_scroll = num_to_scroll;
-
-      if (_num_to_scroll == 0)
-       _num_to_scroll = 1;
-
-      /* If we are scrolling the source or disassembly window, do a
-         "psuedo" scroll since not all of the source is in memory,
-         only what is in the viewport. If win_to_scroll is the command
-         window do nothing since the term should handle it.  */
-      if (win_to_scroll == TUI_SRC_WIN
-         || win_to_scroll == TUI_DISASM_WIN)
-       tui_horizontal_source_scroll (win_to_scroll, RIGHT_SCROLL,
-                                     _num_to_scroll);
-    }
+  if (num_to_scroll == 0)
+    num_to_scroll = 1;
+
+  do_scroll_horizontal (LEFT_SCROLL, num_to_scroll);
 }
 
 
-/* Scroll a window.  Arguments are passed through a va_list.  */
 void
-tui_scroll (enum tui_scroll_direction direction,
-           struct tui_win_info *win_to_scroll,
-           int num_to_scroll)
+tui_win_info::right_scroll (int num_to_scroll)
 {
-  switch (direction)
-    {
-    case FORWARD_SCROLL:
-      tui_scroll_forward (win_to_scroll, num_to_scroll);
-      break;
-    case BACKWARD_SCROLL:
-      tui_scroll_backward (win_to_scroll, num_to_scroll);
-      break;
-    case LEFT_SCROLL:
-      tui_scroll_left (win_to_scroll, num_to_scroll);
-      break;
-    case RIGHT_SCROLL:
-      tui_scroll_right (win_to_scroll, num_to_scroll);
-      break;
-    default:
-      break;
-    }
+  if (num_to_scroll == 0)
+    num_to_scroll = 1;
+
+  do_scroll_horizontal (RIGHT_SCROLL, num_to_scroll);
 }
 
 
@@ -793,7 +602,7 @@ tui_resize_all (void)
        {
        case SRC_COMMAND:
        case DISASSEM_COMMAND:
-         first_win = (struct tui_win_info *) (tui_source_windows ())->list[0];
+         first_win = tui_source_windows ()[0];
          first_win->generic.width += width_diff;
          locator->width += width_diff;
          /* Check for invalid heights.  */
@@ -830,8 +639,7 @@ tui_resize_all (void)
            {
              first_win = TUI_DATA_WIN;
              first_win->generic.width += width_diff;
-             second_win = (struct tui_win_info *)
-               (tui_source_windows ())->list[0];
+             second_win = tui_source_windows ()[0];
              second_win->generic.width += width_diff;
            }
          /* Change the first window's height/width.  */
@@ -893,7 +701,7 @@ tui_resize_all (void)
              && (tui_win_list[win_type] != NULL)
              && !tui_win_list[win_type]->generic.is_visible)
            {
-             tui_free_window (tui_win_list[win_type]);
+             delete tui_win_list[win_type];
              tui_win_list[win_type] = NULL;
            }
        }
@@ -984,11 +792,11 @@ tui_scroll_forward_command (const char *arg, int from_tty)
 
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
-  if (arg == (char *) NULL)
-    parse_scrolling_args (arg, &win_to_scroll, (int *) NULL);
+  if (arg == NULL)
+    parse_scrolling_args (arg, &win_to_scroll, NULL);
   else
     parse_scrolling_args (arg, &win_to_scroll, &num_to_scroll);
-  tui_scroll (FORWARD_SCROLL, win_to_scroll, num_to_scroll);
+  win_to_scroll->forward_scroll (num_to_scroll);
 }
 
 
@@ -1000,11 +808,11 @@ tui_scroll_backward_command (const char *arg, int from_tty)
 
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
-  if (arg == (char *) NULL)
-    parse_scrolling_args (arg, &win_to_scroll, (int *) NULL);
+  if (arg == NULL)
+    parse_scrolling_args (arg, &win_to_scroll, NULL);
   else
     parse_scrolling_args (arg, &win_to_scroll, &num_to_scroll);
-  tui_scroll (BACKWARD_SCROLL, win_to_scroll, num_to_scroll);
+  win_to_scroll->backward_scroll (num_to_scroll);
 }
 
 
@@ -1017,7 +825,7 @@ tui_scroll_left_command (const char *arg, int from_tty)
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
   parse_scrolling_args (arg, &win_to_scroll, &num_to_scroll);
-  tui_scroll (LEFT_SCROLL, win_to_scroll, num_to_scroll);
+  win_to_scroll->left_scroll (num_to_scroll);
 }
 
 
@@ -1030,7 +838,7 @@ tui_scroll_right_command (const char *arg, int from_tty)
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
   parse_scrolling_args (arg, &win_to_scroll, &num_to_scroll);
-  tui_scroll (RIGHT_SCROLL, win_to_scroll, num_to_scroll);
+  win_to_scroll->right_scroll (num_to_scroll);
 }
 
 
@@ -1038,9 +846,9 @@ tui_scroll_right_command (const char *arg, int from_tty)
 static void
 tui_set_focus (const char *arg, int from_tty)
 {
-  if (arg != (char *) NULL)
+  if (arg != NULL)
     {
-      char *buf_ptr = (char *) xstrdup (arg);
+      char *buf_ptr = xstrdup (arg);
       int i;
       struct tui_win_info *win_info = NULL;
 
@@ -1054,8 +862,7 @@ tui_set_focus (const char *arg, int from_tty)
       else
        win_info = tui_partial_win_by_name (buf_ptr);
 
-      if (win_info == (struct tui_win_info *) NULL
-         || !win_info->generic.is_visible)
+      if (win_info == NULL || !win_info->generic.is_visible)
        warning (_("Invalid window specified. \n\
 The window name specified must be valid and visible.\n"));
       else
@@ -1114,6 +921,65 @@ tui_refresh_all_command (const char *arg, int from_tty)
   tui_refresh_all_win ();
 }
 
+/* The tab width that should be used by the TUI.  */
+
+unsigned int tui_tab_width = DEFAULT_TAB_LEN;
+
+/* The tab width as set by the user.  */
+
+static unsigned int internal_tab_width = DEFAULT_TAB_LEN;
+
+/* After the tab width is set, call this to update the relevant
+   windows.  */
+
+static void
+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.  */
+  if (tui_win_list[SRC_WIN]
+      && tui_win_list[SRC_WIN]->generic.is_visible)
+    {
+      make_invisible_and_set_new_height (TUI_SRC_WIN,
+                                        TUI_SRC_WIN->generic.height);
+      make_visible_with_new_height (TUI_SRC_WIN);
+    }
+  if (tui_win_list[DISASSEM_WIN]
+      && tui_win_list[DISASSEM_WIN]->generic.is_visible)
+    {
+      make_invisible_and_set_new_height (TUI_DISASM_WIN,
+                                        TUI_DISASM_WIN->generic.height);
+      make_visible_with_new_height (TUI_DISASM_WIN);
+    }
+}
+
+/* Callback for "set tui tab-width".  */
+
+static void
+tui_set_tab_width (const char *ignore,
+                  int from_tty, struct cmd_list_element *c)
+{
+  if (internal_tab_width == 0)
+    {
+      internal_tab_width = tui_tab_width;
+      error (_("Tab width must not be 0"));
+    }
+
+  tui_tab_width = internal_tab_width;
+  update_tab_width ();
+}
+
+/* Callback for "show tui tab-width".  */
+
+static void
+tui_show_tab_width (struct ui_file *file, int from_tty,
+                   struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (gdb_stdout, _("TUI tab width is %s spaces.\n"), value);
+
+}
 
 /* Set the tab width of the specified window.  */
 static void
@@ -1121,35 +987,20 @@ tui_set_tab_width_command (const char *arg, int from_tty)
 {
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
-  if (arg != (char *) NULL)
+  if (arg != NULL)
     {
       int ts;
 
       ts = atoi (arg);
-      if (ts > 0)
+      if (ts <= 0)
+       warning (_("Tab widths greater than 0 must be specified."));
+      else
        {
-         tui_set_default_tab_len (ts);
-         /* 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.  */
-         if (tui_win_list[SRC_WIN]
-             && tui_win_list[SRC_WIN]->generic.is_visible)
-           {
-             make_invisible_and_set_new_height (TUI_SRC_WIN,
-                                                TUI_SRC_WIN->generic.height);
-             make_visible_with_new_height (TUI_SRC_WIN);
-           }
-         if (tui_win_list[DISASSEM_WIN]
-             && tui_win_list[DISASSEM_WIN]->generic.is_visible)
-           {
-             make_invisible_and_set_new_height (TUI_DISASM_WIN,
-                                                TUI_DISASM_WIN->generic.height);
-             make_visible_with_new_height (TUI_DISASM_WIN);
-           }
+         internal_tab_width = ts;
+         tui_tab_width = ts;
+
+         update_tab_width ();
        }
-      else
-       warning (_("Tab widths greater than 0 must be specified."));
     }
 }
 
@@ -1160,7 +1011,7 @@ tui_set_win_height (const char *arg, int from_tty)
 {
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
-  if (arg != (char *) NULL)
+  if (arg != NULL)
     {
       std::string copy = arg;
       char *buf = &copy[0];
@@ -1171,7 +1022,7 @@ tui_set_win_height (const char *arg, int from_tty)
 
       wname = buf_ptr;
       buf_ptr = strchr (buf_ptr, ' ');
-      if (buf_ptr != (char *) NULL)
+      if (buf_ptr != NULL)
        {
          *buf_ptr = (char) 0;
 
@@ -1180,8 +1031,7 @@ tui_set_win_height (const char *arg, int from_tty)
            wname[i] = tolower (wname[i]);
          win_info = tui_partial_win_by_name (wname);
 
-         if (win_info == (struct tui_win_info *) NULL
-             || !win_info->generic.is_visible)
+         if (win_info == NULL || !win_info->generic.is_visible)
            warning (_("Invalid window specified. \n\
 The window name specified must be valid and visible.\n"));
          else
@@ -1270,7 +1120,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
              make_invisible_and_set_new_height (primary_win_info, new_height);
              if (primary_win_info->generic.type == CMD_WIN)
                {
-                 win_info = (tui_source_windows ())->list[0];
+                 win_info = tui_source_windows ()[0];
                  src_win_info = win_info;
                }
              else
@@ -1299,7 +1149,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
              else
                {
                  first_win = TUI_DATA_WIN;
-                 second_win = (tui_source_windows ())->list[0];
+                 second_win = tui_source_windows ()[0];
                }
              if (primary_win_info == TUI_CMD_WIN)
                { /* Split the change in height accross the 1st & 2nd
@@ -1418,11 +1268,13 @@ make_invisible_and_set_new_height (struct tui_win_info *win_info,
     win_info->generic.viewport_height--;
 
   /* Now deal with the auxillary windows associated with win_info.  */
+  tui_source_window_base *base;
   switch (win_info->generic.type)
     {
     case SRC_WIN:
     case DISASSEM_WIN:
-      gen_win_info = win_info->detail.source_info.execution_info;
+      base = (tui_source_window_base *) win_info;
+      gen_win_info = base->execution_info;
       tui_make_invisible (gen_win_info);
       gen_win_info->height = height;
       gen_win_info->origin.y = win_info->generic.origin.y;
@@ -1433,7 +1285,7 @@ make_invisible_and_set_new_height (struct tui_win_info *win_info,
       if (win_info != TUI_CMD_WIN)
        gen_win_info->viewport_height--;
 
-      if (tui_win_has_locator (win_info))
+      if (win_info->has_locator ())
        {
          gen_win_info = tui_locator_win_info_ptr ();
          tui_make_invisible (gen_win_info);
@@ -1444,9 +1296,8 @@ make_invisible_and_set_new_height (struct tui_win_info *win_info,
       /* Delete all data item windows.  */
       for (i = 0; i < win_info->generic.content_size; i++)
        {
-         gen_win_info = (struct tui_gen_win_info *)
-           &((struct tui_win_element *)
-             win_info->generic.content[i])->which_element.data_window;
+         gen_win_info
+           = &win_info->generic.content[i]->which_element.data_window;
          tui_delete_win (gen_win_info->handle);
          gen_win_info->handle = NULL;
        }
@@ -1467,20 +1318,22 @@ make_visible_with_new_height (struct tui_win_info *win_info)
 
   tui_make_visible (&win_info->generic);
   tui_check_and_display_highlight_if_needed (win_info);
+  tui_source_window_base *base;
   switch (win_info->generic.type)
     {
     case SRC_WIN:
     case DISASSEM_WIN:
-      tui_free_win_content (win_info->detail.source_info.execution_info);
-      tui_make_visible (win_info->detail.source_info.execution_info);
+      base = (tui_source_window_base *) win_info;
+      tui_free_win_content (base->execution_info);
+      tui_make_visible (base->execution_info);
       if (win_info->generic.content != NULL)
        {
-         struct gdbarch *gdbarch = win_info->detail.source_info.gdbarch;
+         struct gdbarch *gdbarch = base->gdbarch;
          struct tui_line_or_address line_or_addr;
          struct symtab_and_line cursal
            = get_current_source_symtab_and_line ();
 
-         line_or_addr = win_info->detail.source_info.start_line_or_addr;
+         line_or_addr = base->start_line_or_addr;
          tui_free_win_content (&win_info->generic);
          tui_update_source_window (win_info, gdbarch,
                                    cursal.symtab, line_or_addr, TRUE);
@@ -1506,7 +1359,7 @@ make_visible_with_new_height (struct tui_win_info *win_info)
            }
          tui_update_source_window (win_info, gdbarch, s, line, TRUE);
        }
-      if (tui_win_has_locator (win_info))
+      if (win_info->has_locator ())
        {
          tui_make_visible (tui_locator_win_info_ptr ());
          tui_show_locator_content ();
@@ -1557,7 +1410,7 @@ new_height_ok (struct tui_win_info *primary_win_info,
              struct tui_win_info *win_info;
 
              if (primary_win_info == TUI_CMD_WIN)
-               win_info = (tui_source_windows ())->list[0];
+               win_info = tui_source_windows ()[0];
              else
                win_info = TUI_CMD_WIN;
              ok = ((new_height +
@@ -1578,7 +1431,7 @@ new_height_ok (struct tui_win_info *primary_win_info,
          else
            {
              first_win = TUI_DATA_WIN;
-             second_win = (tui_source_windows ())->list[0];
+             second_win = tui_source_windows ()[0];
            }
          /* We could simply add all the heights to obtain the same
             result but below is more explicit since we subtract 1 for
@@ -1653,7 +1506,7 @@ parse_scrolling_args (const char *arg,
 
   /* First set up the default window to scroll, in case there is no
      window name arg.  */
-  if (arg != (char *) NULL)
+  if (arg != NULL)
     {
       char *buf_ptr;
 
@@ -1666,7 +1519,7 @@ parse_scrolling_args (const char *arg,
 
          num_str = buf_ptr;
          buf_ptr = strchr (buf_ptr, ' ');
-         if (buf_ptr != (char *) NULL)
+         if (buf_ptr != NULL)
            {
              *buf_ptr = (char) 0;
              if (num_to_scroll)
@@ -1678,7 +1531,7 @@ parse_scrolling_args (const char *arg,
        }
 
       /* Process the window name if one is specified.  */
-      if (buf_ptr != (char *) NULL)
+      if (buf_ptr != NULL)
        {
          const char *wname;
 
@@ -1699,12 +1552,130 @@ parse_scrolling_args (const char *arg,
          
          *win_to_scroll = tui_partial_win_by_name (wname);
 
-         if (*win_to_scroll == (struct tui_win_info *) NULL
+         if (*win_to_scroll == NULL
              || !(*win_to_scroll)->generic.is_visible)
            error (_("Invalid window specified. \n\
 The window name specified must be valid and visible.\n"));
          else if (*win_to_scroll == TUI_CMD_WIN)
-           *win_to_scroll = (tui_source_windows ())->list[0];
+           *win_to_scroll = tui_source_windows ()[0];
        }
     }
 }
+
+/* Function to initialize gdb commands, for tui window
+   manipulation.  */
+
+void
+_initialize_tui_win (void)
+{
+  static struct cmd_list_element *tui_setlist;
+  static struct cmd_list_element *tui_showlist;
+  struct cmd_list_element *cmd;
+
+  /* Define the classes of commands.
+     They will appear in the help list in the reverse of this order.  */
+  add_prefix_cmd ("tui", class_tui, set_tui_cmd,
+                  _("TUI configuration variables"),
+                 &tui_setlist, "set tui ",
+                 0 /* allow-unknown */, &setlist);
+  add_prefix_cmd ("tui", class_tui, show_tui_cmd,
+                  _("TUI configuration variables"),
+                 &tui_showlist, "show tui ",
+                 0 /* allow-unknown */, &showlist);
+
+  add_com ("refresh", class_tui, tui_refresh_all_command,
+           _("Refresh the terminal display."));
+
+  cmd = add_com ("tabset", class_tui, tui_set_tab_width_command, _("\
+Set the width (in characters) of tab stops.\n\
+Usage: tabset N"));
+  deprecate_cmd (cmd, "set tui tab-width");
+
+  cmd = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
+Set or modify the height of a specified window.\n"
+WIN_HEIGHT_USAGE
+"Window names are:\n\
+   src  : the source window\n\
+   cmd  : the command window\n\
+   asm  : the disassembly window\n\
+   regs : the register display"));
+  add_com_alias ("wh", "winheight", class_tui, 0);
+  set_cmd_completer (cmd, winheight_completer);
+  add_info ("win", tui_all_windows_info,
+           _("List of all displayed windows."));
+  cmd = add_com ("focus", class_tui, tui_set_focus_command, _("\
+Set focus to named window or next/prev window.\n"
+FOCUS_USAGE
+"Valid Window names are:\n\
+   src  : the source window\n\
+   asm  : the disassembly window\n\
+   regs : the register display\n\
+   cmd  : the command window"));
+  add_com_alias ("fs", "focus", class_tui, 0);
+  set_cmd_completer (cmd, focus_completer);
+  add_com ("+", class_tui, tui_scroll_forward_command, _("\
+Scroll window forward.\n\
+Usage: + [WIN] [N]"));
+  add_com ("-", class_tui, tui_scroll_backward_command, _("\
+Scroll window backward.\n\
+Usage: - [WIN] [N]"));
+  add_com ("<", class_tui, tui_scroll_left_command, _("\
+Scroll window text to the left.\n\
+Usage: < [WIN] [N]"));
+  add_com (">", class_tui, tui_scroll_right_command, _("\
+Scroll window text to the right.\n\
+Usage: > [WIN] [N]"));
+
+  /* Define the tui control variables.  */
+  add_setshow_enum_cmd ("border-kind", no_class, tui_border_kind_enums,
+                       &tui_border_kind, _("\
+Set the kind of border for TUI windows."), _("\
+Show the kind of border for TUI windows."), _("\
+This variable controls the border of TUI windows:\n\
+   space           use a white space\n\
+   ascii           use ascii characters + - | for the border\n\
+   acs             use the Alternate Character Set"),
+                       tui_set_var_cmd,
+                       show_tui_border_kind,
+                       &tui_setlist, &tui_showlist);
+
+  add_setshow_enum_cmd ("border-mode", no_class, tui_border_mode_enums,
+                       &tui_border_mode, _("\
+Set the attribute mode to use for the TUI window borders."), _("\
+Show the attribute mode to use for the TUI window borders."), _("\
+This variable controls the attributes to use for the window borders:\n\
+   normal          normal display\n\
+   standout        use highlight mode of terminal\n\
+   reverse         use reverse video mode\n\
+   half            use half bright\n\
+   half-standout   use half bright and standout mode\n\
+   bold            use extra bright or bold\n\
+   bold-standout   use extra bright or bold with standout mode"),
+                       tui_set_var_cmd,
+                       show_tui_border_mode,
+                       &tui_setlist, &tui_showlist);
+
+  add_setshow_enum_cmd ("active-border-mode", no_class, tui_border_mode_enums,
+                       &tui_active_border_mode, _("\
+Set the attribute mode to use for the active TUI window border."), _("\
+Show the attribute mode to use for the active TUI window border."), _("\
+This variable controls the attributes to use for the active window border:\n\
+   normal          normal display\n\
+   standout        use highlight mode of terminal\n\
+   reverse         use reverse video mode\n\
+   half            use half bright\n\
+   half-standout   use half bright and standout mode\n\
+   bold            use extra bright or bold\n\
+   bold-standout   use extra bright or bold with standout mode"),
+                       tui_set_var_cmd,
+                       show_tui_active_border_mode,
+                       &tui_setlist, &tui_showlist);
+
+  add_setshow_zuinteger_cmd ("tab-width", no_class,
+                            &internal_tab_width, _("\
+Set the tab width, in characters, for the TUI."), _("\
+Show the tab witdh, in characters, for the TUI"), _("\
+This variable controls how many spaces are used to display a tab character."),
+                            tui_set_tab_width, tui_show_tab_width,
+                            &tui_setlist, &tui_showlist);
+}
This page took 0.032234 seconds and 4 git commands to generate.