tui-stack.h revision 1.9
1/* TUI display locator. 2 3 Copyright (C) 1998-2020 Free Software Foundation, Inc. 4 5 Contributed by Hewlett-Packard Company. 6 7 This file is part of GDB. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 21 22#ifndef TUI_TUI_STACK_H 23#define TUI_TUI_STACK_H 24 25#include "tui/tui-data.h" 26 27struct frame_info; 28 29/* Locator window class. */ 30 31struct tui_locator_window : public tui_win_info 32{ 33 tui_locator_window () = default; 34 35 const char *name () const override 36 { 37 return STATUS_NAME; 38 } 39 40 int max_height () const override 41 { 42 return 1; 43 } 44 45 int min_height () const override 46 { 47 return 1; 48 } 49 50 bool can_box () const override 51 { 52 return false; 53 } 54 55 void rerender () override; 56 57 /* Update the locator, with the provided arguments. 58 59 Returns true if any of the locator's fields were actually 60 changed, and false otherwise. */ 61 bool set_locator_info (struct gdbarch *gdbarch, 62 const struct symtab_and_line &sal, 63 const char *procname); 64 65 /* Set the full_name portion of the locator. */ 66 void set_locator_fullname (const char *fullname); 67 68 std::string full_name; 69 std::string proc_name; 70 int line_no = 0; 71 CORE_ADDR addr = 0; 72 /* Architecture associated with code at this location. */ 73 struct gdbarch *gdbarch = nullptr; 74 75protected: 76 77 void do_scroll_vertical (int n) override 78 { 79 } 80 81 void do_scroll_horizontal (int n) override 82 { 83 } 84 85private: 86 87 /* Create the status line to display as much information as we can 88 on this single line: target name, process number, current 89 function, current line, current PC, SingleKey mode. */ 90 91 std::string make_status_line () const; 92}; 93 94extern void tui_update_locator_fullname (struct symtab *symtab); 95extern void tui_show_locator_content (void); 96extern bool tui_show_frame_info (struct frame_info *); 97 98#endif /* TUI_TUI_STACK_H */ 99