Automatic Copyright Year update after running gdb/copyright.py
[deliverable/binutils-gdb.git] / gdb / tui / tui-out.h
CommitLineData
88b9d363 1/* Copyright (C) 2016-2022 Free Software Foundation, Inc.
112e8700
SM
2
3 This file is part of GDB.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
17
1a5c2598
TT
18#ifndef TUI_TUI_OUT_H
19#define TUI_TUI_OUT_H
112e8700
SM
20
21#include "cli-out.h"
22
cb246234
PA
23/* A ui_out class for the TUI. This is just like the CLI's ui_out,
24 except that it overrides output methods to detect when a source
25 line is being printed and show the source in the TUI's source
26 window instead of printing the line in the console window. */
112e8700
SM
27class tui_ui_out : public cli_ui_out
28{
29public:
30
31 explicit tui_ui_out (ui_file *stream);
32
33protected:
34
381befee
TT
35 void do_field_signed (int fldno, int width, ui_align align, const char *fldname,
36 LONGEST value) override;
112e8700 37 void do_field_string (int fldno, int width, ui_align align, const char *fldname,
e43b10e1 38 const char *string, const ui_file_style &style) override;
112e8700 39 void do_field_fmt (int fldno, int width, ui_align align, const char *fldname,
7f6aba03
TT
40 const ui_file_style &style,
41 const char *format, va_list args) override
42 ATTRIBUTE_PRINTF (7, 0);
112e8700
SM
43 void do_text (const char *string) override;
44
45private:
46
cb246234
PA
47 /* These fields are used to make print_source_lines show the source
48 in the TUI's source window instead of in the console.
49 M_START_OF_LINE is incremented whenever something is output to
50 the ui_out. If an integer field named "line" is printed on the
51 ui_out, and nothing else has been printed yet (both
52 M_START_OF_LINE and M_LINE are still 0), we assume
53 print_source_lines is starting to print a source line, and thus
54 record the line number in M_LINE. Afterwards, when we see a
55 string field named "fullname" being output, we take the fullname
56 and the recorded line and show the source line in the TUI's
57 source window. tui_ui_out::do_text() suppresses text output
58 until it sees an endline being printed, at which point these
59 variables are reset back to 0. */
60 int m_line = 0;
61 int m_start_of_line = 0;
112e8700
SM
62};
63
64extern tui_ui_out *tui_out_new (struct ui_file *stream);
65
1a5c2598 66#endif /* TUI_TUI_OUT_H */
This page took 0.671586 seconds and 4 git commands to generate.