X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ftui%2Ftui-data.h;h=ffdd5e37491c3e109c447fd76e029b926bc391ef;hb=441af85bd9c68dbc0c2a1dbe23bf07c6cb3c3f5d;hp=017e7a40f52bce80892bda24889e54c2d6f81018;hpb=65962b20b6df7e8961ec4002179dbd51a33a627f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index 017e7a40f5..ffdd5e3749 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -1,6 +1,6 @@ /* TUI data manipulation routines. - Copyright (C) 1998-2019 Free Software Foundation, Inc. + Copyright (C) 1998-2020 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -30,10 +30,13 @@ struct tui_cmd_window; struct tui_source_window_base; struct tui_source_window; -/* This is a point definition. */ -struct tui_point +/* A deleter that calls delwin. */ +struct curses_deleter { - int x, y; + void operator() (WINDOW *win) const + { + delwin (win); + } }; /* Generic window information. */ @@ -46,9 +49,20 @@ protected: { } + /* This is called after the window is resized, and should update the + window's contents. */ + virtual void rerender () + { + } + + virtual void make_window (); + public: + tui_gen_win_info (tui_gen_win_info &&) = default; - virtual ~tui_gen_win_info (); + virtual ~tui_gen_win_info () + { + } /* Call to refresh this window. */ virtual void refresh_window (); @@ -62,19 +76,31 @@ public: return ""; } - /* Reset this window. The parameters are used to set the window's - size and position. */ - virtual void reset (int height, int width, - int origin_x, int origin_y); + /* Compute the maximum height of this window. */ + virtual int max_height () const = 0; + + /* Compute the minimum height of this window. */ + virtual int min_height () const = 0; - /* Return true if this can be boxed. */ + /* Return true if this window can be boxed. */ virtual bool can_box () const { return false; } + /* Resize this window. The parameters are used to set the window's + size and position. */ + virtual void resize (int height, int width, + int origin_x, int origin_y); + + /* Return true if this window is visible. */ + bool is_visible () const + { + return handle != nullptr; + } + /* Window handle. */ - WINDOW *handle = nullptr; + std::unique_ptr handle; /* Type of window. */ enum tui_win_type type; /* Window width. */ @@ -82,44 +108,22 @@ public: /* Window height. */ int height = 0; /* Origin of window. */ - struct tui_point origin = {0, 0}; - /* Viewport height. */ - int viewport_height = 0; - /* Whether the window is visible or not. */ - bool is_visible = false; - /* Window title to display. */ - char *title = nullptr; + int x = 0; + int y = 0; }; /* Constant definitions. */ #define DEFAULT_TAB_LEN 8 -#define NO_SRC_STRING "[ No Source Available ]" -#define NO_DISASSEM_STRING "[ No Assembly Available ]" -#define NO_REGS_STRING "[ Register Values Unavailable ]" -#define NO_DATA_STRING "[ No Data Values Displayed ]" #define SRC_NAME "src" #define CMD_NAME "cmd" #define DATA_NAME "regs" #define DISASSEM_NAME "asm" -#define HILITE TRUE -#define NO_HILITE FALSE #define MIN_WIN_HEIGHT 3 #define MIN_CMD_WIN_HEIGHT 3 /* Strings to display in the TUI status line. */ -#define PROC_PREFIX "In: " -#define LINE_PREFIX "L" -#define PC_PREFIX "PC: " #define SINGLE_KEY "(SingleKey)" -/* Minimum/Maximum length of some fields displayed in the TUI status - line. */ -#define MIN_LINE_WIDTH 4 /* Use at least 4 digits for line - numbers. */ -#define MIN_PROC_WIDTH 12 -#define MAX_TARGET_WIDTH 10 -#define MAX_PID_WIDTH 19 - /* The kinds of layouts available. */ enum tui_layout_type { @@ -148,31 +152,6 @@ struct tui_line_or_address } u; }; -#ifdef PATH_MAX -# define MAX_LOCATOR_ELEMENT_LEN PATH_MAX -#else -# define MAX_LOCATOR_ELEMENT_LEN 1024 -#endif - -/* Locator window class. */ - -struct tui_locator_window : public tui_gen_win_info -{ - tui_locator_window () - : tui_gen_win_info (LOCATOR_WIN) - { - full_name[0] = 0; - proc_name[0] = 0; - } - - char full_name[MAX_LOCATOR_ELEMENT_LEN]; - char proc_name[MAX_LOCATOR_ELEMENT_LEN]; - int line_no = 0; - CORE_ADDR addr = 0; - /* Architecture associated with code at this location. */ - struct gdbarch *gdbarch = nullptr; -}; - /* This defines information about each logical window. */ struct tui_win_info : public tui_gen_win_info { @@ -189,9 +168,9 @@ protected: left_scroll and right_scroll. */ virtual void do_scroll_horizontal (int num_to_scroll) = 0; - /* Called after make_visible_with_new_height sets the new height. - Should update the window. */ - virtual void do_make_visible_with_new_height () = 0; + void rerender () override; + + void make_window () override; public: @@ -199,35 +178,19 @@ public: { } - /* Called after all the TUI windows are refreshed, to let this - window have a chance to update itself further. */ - virtual void refresh_all () - { - } + int max_height () const override; - /* Called after a TUI window is given a new height; this updates any - related auxiliary windows. */ - virtual void set_new_height (int height) + int min_height () const override { + return MIN_WIN_HEIGHT; } - /* Compute the maximum height of this window. */ - virtual int max_height () const; - /* Called after the tab width has been changed. */ virtual void update_tab_width () { } - /* Function make the target window (and auxiliary windows associated - with the target) invisible, and set the new height and - location. */ - void make_invisible_and_set_new_height (int height); - - /* Make the window visible after the height has been changed. */ - void make_visible_with_new_height (); - - /* Set whether this window is highglighted. */ + /* Set whether this window is highlighted. */ void set_highlight (bool highlight) { is_highlighted = highlight; @@ -254,15 +217,13 @@ public: void check_and_display_highlight_if_needed (); - /* Can this window ever be highlighted? */ - bool can_highlight = true; + /* Window title to display. */ + std::string title; /* Is this window highlighted? */ bool is_highlighted = false; }; -extern int tui_win_is_auxiliary (enum tui_win_type win_type); - /* Global Data. */ extern struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS]; @@ -342,22 +303,16 @@ struct all_tui_windows /* Data Manipulation Functions. */ -extern void tui_initialize_static_data (void); -extern struct tui_win_info *tui_partial_win_by_name (const char *); extern enum tui_layout_type tui_current_layout (void); extern int tui_term_height (void); extern void tui_set_term_height_to (int); extern int tui_term_width (void); extern void tui_set_term_width_to (int); extern struct tui_locator_window *tui_locator_win_info_ptr (void); -extern std::vector &tui_source_windows (); -extern void tui_clear_source_windows (void); -extern void tui_clear_source_windows_detail (void); -extern void tui_add_to_source_windows (struct tui_source_window_base *); extern struct tui_win_info *tui_win_with_focus (void); extern void tui_set_win_with_focus (struct tui_win_info *); -extern int tui_win_resized (void); -extern void tui_set_win_resized_to (int); +extern bool tui_win_resized (); +extern void tui_set_win_resized_to (bool); extern struct tui_win_info *tui_next_win (struct tui_win_info *); extern struct tui_win_info *tui_prev_win (struct tui_win_info *);