]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/tui/tui-regs.h
Change some tui_data_window methods to be private
[thirdparty/binutils-gdb.git] / gdb / tui / tui-regs.h
CommitLineData
f377b406 1/* TUI display registers in window.
55fb0713 2
42a4f53d 3 Copyright (C) 1998-2019 Free Software Foundation, Inc.
55fb0713 4
f377b406
SC
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
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
f377b406
SC
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
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
f377b406 21
1a5c2598
TT
22#ifndef TUI_TUI_REGS_H
23#define TUI_TUI_REGS_H
c906108c 24
18ab23af
TT
25#include "tui/tui-data.h"
26
96bd6233
TT
27/* A data item window. */
28
29struct tui_data_item_window : public tui_gen_win_info
30{
31 tui_data_item_window ()
32 : tui_gen_win_info (DATA_ITEM_WIN)
33 {
34 }
35
fa4dc567
TT
36 DISABLE_COPY_AND_ASSIGN (tui_data_item_window);
37
38 tui_data_item_window (tui_data_item_window &&) = default;
39
96bd6233
TT
40 const char *name = nullptr;
41 /* The register number, or data display number. */
42 int item_no = -1;
96bd6233 43 bool highlight = false;
b9ad3686 44 gdb::unique_xmalloc_ptr<char> content;
96bd6233
TT
45};
46
18ab23af
TT
47/* The TUI registers window. */
48struct tui_data_window : public tui_win_info
49{
50 tui_data_window ()
51 : tui_win_info (DATA_WIN)
52 {
53 }
54
55 DISABLE_COPY_AND_ASSIGN (tui_data_window);
56
18ab23af
TT
57 void refresh_all () override;
58
18ab23af
TT
59 void refresh_window () override;
60
61 const char *name () const override
62 {
63 return DATA_NAME;
64 }
65
66 /* Windows that are used to display registers. */
fa4dc567 67 std::vector<tui_data_item_window> regs_content;
18ab23af 68 int regs_column_count = 0;
18ab23af
TT
69 struct reggroup *current_group = nullptr;
70
04c72a68 71 void check_register_values (struct frame_info *frame);
18ab23af 72
04c72a68 73 void show_registers (struct reggroup *group);
18ab23af 74
04c72a68 75protected:
18ab23af 76
04c72a68
TT
77 void do_scroll_vertical (int num_to_scroll) override;
78 void do_scroll_horizontal (int num_to_scroll) override
79 {
80 }
18ab23af 81
04c72a68 82 void rerender () override;
18ab23af 83
04c72a68 84private:
18ab23af
TT
85
86 /* Display the registers in the content from 'start_element_no'
87 until the end of the register content or the end of the display
88 height. No checking for displaying past the end of the registers
89 is done here. */
90 void display_registers_from (int start_element_no);
91
92 /* Display the registers starting at line line_no in the data
93 window. Answers the line number that the display actually
94 started from. If nothing is displayed (-1) is returned. */
95 int display_registers_from_line (int line_no);
96
18ab23af
TT
97 /* Return the index of the first element displayed. If none are
98 displayed, then return -1. */
99 int first_data_item_displayed ();
100
101 /* Display the registers in the content from 'start_element_no' on
102 'start_line_no' until the end of the register content or the end
103 of the display height. This function checks that we won't
104 display off the end of the register display. */
105 void display_reg_element_at_line (int start_element_no, int start_line_no);
3df505f6 106
ca02d7c8
TT
107 void show_register_group (struct reggroup *group,
108 struct frame_info *frame,
109 int refresh_values_only);
04c72a68
TT
110
111 /* Answer the number of the last line in the regs display. If there
112 are no registers (-1) is returned. */
113 int last_regs_line_no () const;
114
115 /* Answer the line number that the register element at element_no is
116 on. If element_no is greater than the number of register
117 elements there are, -1 is returned. */
118 int line_from_reg_element_no (int element_no) const;
119
120 /* Answer the index of the first element in line_no. If line_no is
121 past the register area (-1) is returned. */
122 int first_reg_element_no_inline (int line_no) const;
123
124 /* Displays the data that is in the data window's content. It does
125 not set the content. */
126 void display_all_data ();
127
128 /* Delete all the item windows in the data window. This is usually
129 done when the data window is scrolled. */
130 void delete_data_content_windows ();
131
132 void erase_data_content (const char *prompt);
ca02d7c8 133};
c906108c 134
1a5c2598 135#endif /* TUI_TUI_REGS_H */