Remove unneeded pattern matching in gdb.base/maint.exp
[deliverable/binutils-gdb.git] / gdb / ui-out.h
CommitLineData
8b93c638 1/* Output generating routines for GDB.
bee0189a 2
618f726f 3 Copyright (C) 1999-2016 Free Software Foundation, Inc.
bee0189a 4
8b93c638
JM
5 Contributed by Cygnus Solutions.
6 Written by Fernando Nasser for Cygnus.
7
8 This file is part of GDB.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
a9762ec7 12 the Free Software Foundation; either version 3 of the License, or
8b93c638
JM
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
a9762ec7 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b93c638
JM
22
23#ifndef UI_OUT_H
24#define UI_OUT_H 1
25
26/* The ui_out structure */
27
8b93c638 28struct ui_out;
e6e5e94c 29struct ui_file;
8b93c638
JM
30
31/* the current ui_out */
32
33/* FIXME: This should not be a global but something passed down from main.c
581e13c1 34 or top.c. */
b6dcde57
PA
35extern struct ui_out **current_ui_current_uiout_ptr (void);
36#define current_uiout (*current_ui_current_uiout_ptr ())
8b93c638
JM
37
38/* alignment enum */
39enum ui_align
40 {
41 ui_left = -1,
42 ui_center,
43 ui_right,
44 ui_noalign
45 };
46
47/* flags enum */
48enum ui_flags
49 {
50 ui_from_tty = 1,
51 ui_source_list = 2
52 };
53
54
581e13c1 55/* Prototypes for ui-out API. */
8b93c638 56
631ec795 57/* A result is a recursive data structure consisting of lists and
581e13c1 58 tuples. */
631ec795
AC
59
60enum ui_out_type
61 {
666547aa 62 ui_out_type_tuple,
631ec795
AC
63 ui_out_type_list
64 };
65
66extern void ui_out_begin (struct ui_out *uiout,
67 enum ui_out_type level_type,
68 const char *id);
69
70extern void ui_out_end (struct ui_out *uiout, enum ui_out_type type);
71
d63f1d40
AC
72/* A table can be considered a special tuple/list combination with the
73 implied structure: ``table = { hdr = { header, ... } , body = [ {
581e13c1
MS
74 field, ... }, ... ] }''. If NR_ROWS is negative then there is at
75 least one row. */
a14ed312 76extern void ui_out_table_header (struct ui_out *uiout, int width,
c5209615
SM
77 enum ui_align align,
78 const std::string &col_name,
79 const std::string &col_hdr);
8b93c638 80
a14ed312 81extern void ui_out_table_body (struct ui_out *uiout);
8b93c638 82
3b31d625
EZ
83extern struct cleanup *make_cleanup_ui_out_table_begin_end (struct ui_out *ui_out,
84 int nr_cols,
3e43a32a
MS
85 int nr_rows,
86 const char *tblid);
6b28c186 87/* Compatibility wrappers. */
631ec795 88
6b28c186
AC
89extern struct cleanup *make_cleanup_ui_out_list_begin_end (struct ui_out *uiout,
90 const char *id);
666547aa 91
666547aa
AC
92extern struct cleanup *make_cleanup_ui_out_tuple_begin_end (struct ui_out *uiout,
93 const char *id);
e6e0bfab 94
88379baf
AC
95extern void ui_out_field_int (struct ui_out *uiout, const char *fldname,
96 int value);
8b93c638 97
52c6a6ac
JJ
98extern void ui_out_field_fmt_int (struct ui_out *uiout, int width,
99 enum ui_align align, const char *fldname,
100 int value);
101
26e519b9 102/* Output a field containing an address. */
15230f37 103
88379baf 104extern void ui_out_field_core_addr (struct ui_out *uiout, const char *fldname,
5af949e3 105 struct gdbarch *gdbarch, CORE_ADDR address);
8b93c638 106
88379baf 107extern void ui_out_field_string (struct ui_out * uiout, const char *fldname,
8b93c638
JM
108 const char *string);
109
88379baf 110extern void ui_out_field_stream (struct ui_out *uiout, const char *fldname,
f99d8bf4 111 struct ui_file *stream);
8b93c638 112
88379baf 113extern void ui_out_field_fmt (struct ui_out *uiout, const char *fldname,
bee0189a 114 const char *format, ...)
a0b31db1 115 ATTRIBUTE_PRINTF (3, 4);
8b93c638 116
88379baf 117extern void ui_out_field_skip (struct ui_out *uiout, const char *fldname);
8b93c638 118
a14ed312 119extern void ui_out_spaces (struct ui_out *uiout, int numspaces);
8b93c638 120
88379baf 121extern void ui_out_text (struct ui_out *uiout, const char *string);
8b93c638 122
7fb048a2
SM
123extern void ui_out_message (struct ui_out *uiout, const char *format, ...)
124 ATTRIBUTE_PRINTF (2, 3);
8b93c638 125
d2c0eef4 126extern void ui_out_wrap_hint (struct ui_out *uiout, const char *identstring);
8b93c638 127
a14ed312 128extern void ui_out_flush (struct ui_out *uiout);
8b93c638 129
8b93c638
JM
130extern int ui_out_test_flags (struct ui_out *uiout, int mask);
131
170b53b2 132extern int ui_out_query_field (struct ui_out *uiout, int colno,
c5209615
SM
133 int *width, int *alignment,
134 const char **col_name);
170b53b2 135
9dc5e2a9
AC
136/* HACK: Code in GDB is currently checking to see the type of ui_out
137 builder when determining which output to produce. This function is
138 a hack to encapsulate that test. Once GDB manages to separate the
139 CLI/MI from the core of GDB the problem should just go away .... */
140
141extern int ui_out_is_mi_like_p (struct ui_out *uiout);
142
8b93c638
JM
143/* From here on we have things that are only needed by implementation
144 routines and main.c. We should pehaps have a separate file for that,
581e13c1 145 like a ui-out-impl.h file. */
8b93c638
JM
146
147/* User Interface Output Implementation Function Table */
148
581e13c1 149/* Type definition of all implementation functions. */
8b93c638
JM
150
151typedef void (table_begin_ftype) (struct ui_out * uiout,
d63f1d40
AC
152 int nbrofcols, int nr_rows,
153 const char *tblid);
8b93c638
JM
154typedef void (table_body_ftype) (struct ui_out * uiout);
155typedef void (table_end_ftype) (struct ui_out * uiout);
156typedef void (table_header_ftype) (struct ui_out * uiout, int width,
c5209615
SM
157 enum ui_align align,
158 const std::string &col_name,
159 const std::string &col_hdr);
33b2fac6 160
631ec795
AC
161typedef void (ui_out_begin_ftype) (struct ui_out *uiout,
162 enum ui_out_type type,
33b2fac6 163 const char *id);
631ec795 164typedef void (ui_out_end_ftype) (struct ui_out *uiout,
33b2fac6 165 enum ui_out_type type);
8b93c638 166typedef void (field_int_ftype) (struct ui_out * uiout, int fldno, int width,
e2e11a41
AC
167 enum ui_align align,
168 const char *fldname, int value);
8b93c638 169typedef void (field_skip_ftype) (struct ui_out * uiout, int fldno, int width,
e2e11a41
AC
170 enum ui_align align,
171 const char *fldname);
8b93c638 172typedef void (field_string_ftype) (struct ui_out * uiout, int fldno, int width,
e2e11a41
AC
173 enum ui_align align,
174 const char *fldname,
8b93c638
JM
175 const char *string);
176typedef void (field_fmt_ftype) (struct ui_out * uiout, int fldno, int width,
e2e11a41
AC
177 enum ui_align align,
178 const char *fldname,
179 const char *format,
bee0189a 180 va_list args) ATTRIBUTE_FPTR_PRINTF(6,0);
8b93c638 181typedef void (spaces_ftype) (struct ui_out * uiout, int numspaces);
e2e11a41
AC
182typedef void (text_ftype) (struct ui_out * uiout,
183 const char *string);
7fb048a2 184typedef void (message_ftype) (struct ui_out * uiout,
bee0189a 185 const char *format, va_list args)
7fb048a2 186 ATTRIBUTE_FPTR_PRINTF(2,0);
d2c0eef4 187typedef void (wrap_hint_ftype) (struct ui_out * uiout, const char *identstring);
8b93c638 188typedef void (flush_ftype) (struct ui_out * uiout);
0fac0b41
DJ
189typedef int (redirect_ftype) (struct ui_out * uiout,
190 struct ui_file * outstream);
b65a2bd9 191typedef void (data_destroy_ftype) (struct ui_out *uiout);
8b93c638
JM
192
193/* ui-out-impl */
194
8b93c638
JM
195struct ui_out_impl
196 {
197 table_begin_ftype *table_begin;
198 table_body_ftype *table_body;
199 table_end_ftype *table_end;
200 table_header_ftype *table_header;
631ec795
AC
201 ui_out_begin_ftype *begin;
202 ui_out_end_ftype *end;
8b93c638
JM
203 field_int_ftype *field_int;
204 field_skip_ftype *field_skip;
205 field_string_ftype *field_string;
206 field_fmt_ftype *field_fmt;
207 spaces_ftype *spaces;
208 text_ftype *text;
209 message_ftype *message;
210 wrap_hint_ftype *wrap_hint;
211 flush_ftype *flush;
0fac0b41 212 redirect_ftype *redirect;
b65a2bd9 213 data_destroy_ftype *data_destroy;
9dc5e2a9 214 int is_mi_like_p;
8b93c638
JM
215 };
216
0a8fce9a 217extern void *ui_out_data (struct ui_out *uiout);
8b93c638 218
0a8fce9a
PA
219extern void uo_field_string (struct ui_out *uiout, int fldno, int width,
220 enum ui_align align, const char *fldname,
221 const char *string);
8b93c638
JM
222
223/* Create a ui_out object */
224
89de4da4 225extern struct ui_out *ui_out_new (const struct ui_out_impl *impl,
0a8fce9a 226 void *data,
8b93c638
JM
227 int flags);
228
0fac0b41
DJ
229/* Redirect the ouptut of a ui_out object temporarily. */
230
231extern int ui_out_redirect (struct ui_out *uiout, struct ui_file *outstream);
232
8b93c638 233#endif /* UI_OUT_H */
This page took 2.485444 seconds and 4 git commands to generate.