Change tui_make_status_line to be a method

This changes tui_make_status_line to be a method on
tui_locator_window.  This is a minor cleanup.

This also changes the new method to use the locator's width, rather
than the terminal width.  This is important if we ever want to allow
windows to be made more narrow.

gdb/ChangeLog
2019-09-20  Tom Tromey  <tom@tromey.com>

	* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
	Declare.
	* tui/tui-stack.c (tui_locator_window::make_status_line): Rename
	from tui_make_status_line.
	(tui_locator_window::rerender): Update.
This commit is contained in:
Tom Tromey 2019-07-23 16:43:20 -06:00
parent f853215443
commit 71a25ed2e7
3 changed files with 28 additions and 18 deletions

View file

@ -1,3 +1,11 @@
2019-09-20 Tom Tromey <tom@tromey.com>
* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
Declare.
* tui/tui-stack.c (tui_locator_window::make_status_line): Rename
from tui_make_status_line.
(tui_locator_window::rerender): Update.
2019-09-20 Tom Tromey <tom@tromey.com>
* tui/tui-stack.c (tui_make_status_line): Return std::string.

View file

@ -63,13 +63,10 @@ tui_locator_win_info_ptr (void)
return &_locator;
}
/* Create the status line to display as much information as we can on
this single line: target name, process number, current function,
current line, current PC, SingleKey mode. */
static std::string
tui_make_status_line (struct tui_locator_window *loc)
std::string
tui_locator_window::make_status_line () const
{
char line_buf[50], *pname;
char line_buf[50];
int status_size;
int proc_width;
const char *pid_name;
@ -94,11 +91,11 @@ tui_make_status_line (struct tui_locator_window *loc)
if (pid_width > MAX_PID_WIDTH)
pid_width = MAX_PID_WIDTH;
status_size = tui_term_width ();
status_size = width;
/* Translate line number and obtain its size. */
if (loc->line_no > 0)
xsnprintf (line_buf, sizeof (line_buf), "%d", loc->line_no);
if (line_no > 0)
xsnprintf (line_buf, sizeof (line_buf), "%d", line_no);
else
strcpy (line_buf, "??");
line_width = strlen (line_buf);
@ -106,8 +103,8 @@ tui_make_status_line (struct tui_locator_window *loc)
line_width = MIN_LINE_WIDTH;
/* Translate PC address. */
std::string pc_out (loc->gdbarch
? paddress (loc->gdbarch, loc->addr)
std::string pc_out (gdbarch
? paddress (gdbarch, addr)
: "??");
const char *pc_buf = pc_out.c_str ();
int pc_width = pc_out.size ();
@ -150,9 +147,6 @@ tui_make_status_line (struct tui_locator_window *loc)
}
}
/* Now convert elements to string form. */
pname = loc->proc_name;
/* Now create the locator line from the string version of the
elements. */
string_file string;
@ -172,12 +166,12 @@ tui_make_status_line (struct tui_locator_window *loc)
/* Procedure/class name. */
if (proc_width > 0)
{
if (strlen (pname) > proc_width)
if (strlen (proc_name) > proc_width)
string.printf ("%s%*.*s* ", PROC_PREFIX,
1 - proc_width, proc_width - 1, pname);
1 - proc_width, proc_width - 1, proc_name);
else
string.printf ("%s%*.*s ", PROC_PREFIX,
-proc_width, proc_width, pname);
-proc_width, proc_width, proc_name);
}
if (line_width > 0)
@ -234,7 +228,7 @@ tui_locator_window::rerender ()
{
if (handle != NULL)
{
std::string string = tui_make_status_line (this);
std::string string = make_status_line ();
wmove (handle, 0, 0);
/* We ignore the return value from wstandout and wstandend, casting
them to void in order to avoid a compiler warning. The warning

View file

@ -63,6 +63,14 @@ struct tui_locator_window : public tui_gen_win_info
CORE_ADDR addr = 0;
/* Architecture associated with code at this location. */
struct gdbarch *gdbarch = nullptr;
private:
/* Create the status line to display as much information as we can
on this single line: target name, process number, current
function, current line, current PC, SingleKey mode. */
std::string make_status_line () const;
};
extern void tui_update_locator_fullname (const char *);