GDB (xrefs)
/tmp/gdb-7.10/gdb/ui-out.h
Go to the documentation of this file.
1 /* Output generating routines for GDB.
2 
3  Copyright (C) 1999-2015 Free Software Foundation, Inc.
4 
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
12  the Free Software Foundation; either version 3 of the License, or
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
21  along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 
23 #ifndef UI_OUT_H
24 #define UI_OUT_H 1
25 
26 /* The ui_out structure */
27 
28 struct ui_out;
29 struct ui_file;
30 
31 /* the current ui_out */
32 
33 /* FIXME: This should not be a global but something passed down from main.c
34  or top.c. */
35 extern struct ui_out *current_uiout;
36 
37 /* alignment enum */
39  {
40  ui_left = -1,
44  };
45 
46 /* flags enum */
48  {
51  };
52 
53 
54 /* Prototypes for ui-out API. */
55 
56 /* A result is a recursive data structure consisting of lists and
57  tuples. */
58 
60  {
63  };
64 
65 extern void ui_out_begin (struct ui_out *uiout,
66  enum ui_out_type level_type,
67  const char *id);
68 
69 extern void ui_out_end (struct ui_out *uiout, enum ui_out_type type);
70 
71 extern struct cleanup *ui_out_begin_cleanup_end (struct ui_out *uiout,
72  enum ui_out_type level_type,
73  const char *id);
74 
75 /* A table can be considered a special tuple/list combination with the
76  implied structure: ``table = { hdr = { header, ... } , body = [ {
77  field, ... }, ... ] }''. If NR_ROWS is negative then there is at
78  least one row. */
79 extern void ui_out_table_header (struct ui_out *uiout, int width,
80  enum ui_align align, const char *col_name,
81  const char *colhdr);
82 
83 extern void ui_out_table_body (struct ui_out *uiout);
84 
86  int nr_cols,
87  int nr_rows,
88  const char *tblid);
89 /* Compatibility wrappers. */
90 
91 extern struct cleanup *make_cleanup_ui_out_list_begin_end (struct ui_out *uiout,
92  const char *id);
93 
94 extern struct cleanup *make_cleanup_ui_out_tuple_begin_end (struct ui_out *uiout,
95  const char *id);
96 
97 extern void ui_out_field_int (struct ui_out *uiout, const char *fldname,
98  int value);
99 
100 extern void ui_out_field_fmt_int (struct ui_out *uiout, int width,
101  enum ui_align align, const char *fldname,
102  int value);
103 
104 /* Output a field containing an address. */
105 
106 extern void ui_out_field_core_addr (struct ui_out *uiout, const char *fldname,
107  struct gdbarch *gdbarch, CORE_ADDR address);
108 
109 extern void ui_out_field_string (struct ui_out * uiout, const char *fldname,
110  const char *string);
111 
112 extern void ui_out_field_stream (struct ui_out *uiout, const char *fldname,
113  struct ui_file *stream);
114 
115 extern void ui_out_field_fmt (struct ui_out *uiout, const char *fldname,
116  const char *format, ...)
117  ATTRIBUTE_PRINTF (3, 4);
118 
119 extern void ui_out_field_skip (struct ui_out *uiout, const char *fldname);
120 
121 extern void ui_out_spaces (struct ui_out *uiout, int numspaces);
122 
123 extern void ui_out_text (struct ui_out *uiout, const char *string);
124 
125 extern void ui_out_message (struct ui_out *uiout, int verbosity,
126  const char *format, ...)
127  ATTRIBUTE_PRINTF (3, 4);
128 
129 extern void ui_out_wrap_hint (struct ui_out *uiout, char *identstring);
130 
131 extern void ui_out_flush (struct ui_out *uiout);
132 
133 extern int ui_out_set_flags (struct ui_out *uiout, int mask);
134 
135 extern int ui_out_clear_flags (struct ui_out *uiout, int mask);
136 
137 extern int ui_out_get_verblvl (struct ui_out *uiout);
138 
139 extern int ui_out_test_flags (struct ui_out *uiout, int mask);
140 
141 extern int ui_out_query_field (struct ui_out *uiout, int colno,
142  int *width, int *alignment, char **col_name);
143 
144 /* HACK: Code in GDB is currently checking to see the type of ui_out
145  builder when determining which output to produce. This function is
146  a hack to encapsulate that test. Once GDB manages to separate the
147  CLI/MI from the core of GDB the problem should just go away .... */
148 
149 extern int ui_out_is_mi_like_p (struct ui_out *uiout);
150 
151 /* From here on we have things that are only needed by implementation
152  routines and main.c. We should pehaps have a separate file for that,
153  like a ui-out-impl.h file. */
154 
155 /* User Interface Output Implementation Function Table */
156 
157 /* Type definition of all implementation functions. */
158 
159 typedef void (table_begin_ftype) (struct ui_out * uiout,
160  int nbrofcols, int nr_rows,
161  const char *tblid);
162 typedef void (table_body_ftype) (struct ui_out * uiout);
163 typedef void (table_end_ftype) (struct ui_out * uiout);
164 typedef void (table_header_ftype) (struct ui_out * uiout, int width,
165  enum ui_align align, const char *col_name,
166  const char *colhdr);
167 /* Note: level 0 is the top-level so LEVEL is always greater than
168  zero. */
169 typedef void (ui_out_begin_ftype) (struct ui_out *uiout,
170  enum ui_out_type type,
171  int level, const char *id);
172 typedef void (ui_out_end_ftype) (struct ui_out *uiout,
173  enum ui_out_type type,
174  int level);
175 typedef void (field_int_ftype) (struct ui_out * uiout, int fldno, int width,
176  enum ui_align align,
177  const char *fldname, int value);
178 typedef void (field_skip_ftype) (struct ui_out * uiout, int fldno, int width,
179  enum ui_align align,
180  const char *fldname);
181 typedef void (field_string_ftype) (struct ui_out * uiout, int fldno, int width,
182  enum ui_align align,
183  const char *fldname,
184  const char *string);
185 typedef void (field_fmt_ftype) (struct ui_out * uiout, int fldno, int width,
186  enum ui_align align,
187  const char *fldname,
188  const char *format,
189  va_list args) ATTRIBUTE_FPTR_PRINTF(6,0);
190 typedef void (spaces_ftype) (struct ui_out * uiout, int numspaces);
191 typedef void (text_ftype) (struct ui_out * uiout,
192  const char *string);
193 typedef void (message_ftype) (struct ui_out * uiout, int verbosity,
194  const char *format, va_list args)
195  ATTRIBUTE_FPTR_PRINTF(3,0);
196 typedef void (wrap_hint_ftype) (struct ui_out * uiout, char *identstring);
197 typedef void (flush_ftype) (struct ui_out * uiout);
198 typedef int (redirect_ftype) (struct ui_out * uiout,
199  struct ui_file * outstream);
200 typedef void (data_destroy_ftype) (struct ui_out *uiout);
201 
202 /* ui-out-impl */
203 
204 /* IMPORTANT: If you change this structure, make sure to change the default
205  initialization in ui-out.c. */
206 
208  {
227  };
228 
229 extern void *ui_out_data (struct ui_out *uiout);
230 
231 extern void uo_field_string (struct ui_out *uiout, int fldno, int width,
232  enum ui_align align, const char *fldname,
233  const char *string);
234 
235 /* Create a ui_out object */
236 
237 extern struct ui_out *ui_out_new (const struct ui_out_impl *impl,
238  void *data,
239  int flags);
240 
241 /* Destroy a ui_out object. */
242 
243 extern void ui_out_destroy (struct ui_out *uiout);
244 
245 /* Redirect the ouptut of a ui_out object temporarily. */
246 
247 extern int ui_out_redirect (struct ui_out *uiout, struct ui_file *outstream);
248 
249 #endif /* UI_OUT_H */
struct cleanup * make_cleanup_ui_out_tuple_begin_end(struct ui_out *uiout, const char *id)
Definition: ui-out.c:451
int( redirect_ftype)(struct ui_out *uiout, struct ui_file *outstream)
Definition: ui-out.h:198
void ui_out_table_header(struct ui_out *uiout, int width, enum ui_align align, const char *col_name, const char *colhdr)
Definition: ui-out.c:346
void ui_out_end(struct ui_out *uiout, enum ui_out_type type)
Definition: ui-out.c:415
void ui_out_field_fmt_int(struct ui_out *uiout, int width, enum ui_align align, const char *fldname, int value)
Definition: ui-out.c:481
void() typedef void( spaces_ftype)(struct ui_out *uiout, int numspaces)
Definition: ui-out.h:190
void( message_ftype)(struct ui_out *uiout, int verbosity, const char *format, va_list args) ATTRIBUTE_FPTR_PRINTF(3
Definition: ui-out.h:193
void ui_out_text(struct ui_out *uiout, const char *string)
Definition: ui-out.c:582
bfd_vma CORE_ADDR
Definition: common-types.h:41
struct cleanup * make_cleanup_ui_out_table_begin_end(struct ui_out *ui_out, int nr_cols, int nr_rows, const char *tblid)
Definition: ui-out.c:369
redirect_ftype * redirect
Definition: ui-out.h:224
struct ui_out * current_uiout
Definition: ui-out.c:233
struct type ** const(pascal_builtin_types[])
message_ftype * message
Definition: ui-out.h:221
void ui_out_destroy(struct ui_out *uiout)
Definition: ui-out.c:1125
void( data_destroy_ftype)(struct ui_out *uiout)
Definition: ui-out.h:200
struct cleanup * ui_out_begin_cleanup_end(struct ui_out *uiout, enum ui_out_type level_type, const char *id)
void( field_fmt_ftype)(struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *format, va_list args) ATTRIBUTE_FPTR_PRINTF(6
Definition: ui-out.h:185
spaces_ftype * spaces
Definition: ui-out.h:219
table_end_ftype * table_end
Definition: ui-out.h:211
void uo_field_string(struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *string)
Definition: ui-out.c:854
Definition: ui-out.h:40
struct cleanup * make_cleanup_ui_out_list_begin_end(struct ui_out *uiout, const char *id)
Definition: ui-out.c:459
int ui_out_test_flags(struct ui_out *uiout, int mask)
Definition: ui-out.c:639
flush_ftype * flush
Definition: ui-out.h:223
void( ui_out_end_ftype)(struct ui_out *uiout, enum ui_out_type type, int level)
Definition: ui-out.h:172
Definition: ui-out.c:99
void void ui_out_wrap_hint(struct ui_out *uiout, char *identstring)
Definition: ui-out.c:600
void ui_out_field_int(struct ui_out *uiout, const char *fldname, int value)
Definition: ui-out.c:467
void( table_header_ftype)(struct ui_out *uiout, int width, enum ui_align align, const char *col_name, const char *colhdr)
Definition: ui-out.h:164
table_begin_ftype * table_begin
Definition: ui-out.h:209
text_ftype * text
Definition: ui-out.h:220
field_fmt_ftype * field_fmt
Definition: ui-out.h:218
void ui_out_message(struct ui_out *uiout, int verbosity, const char *format,...) ATTRIBUTE_PRINTF(3
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
Definition: gnu-nat.c:1885
void void ui_out_field_skip(struct ui_out *uiout, const char *fldname)
Definition: ui-out.c:528
void( table_end_ftype)(struct ui_out *uiout)
Definition: ui-out.h:163
void * data
Definition: ui-out.c:104
void ui_out_begin(struct ui_out *uiout, enum ui_out_type level_type, const char *id)
Definition: ui-out.c:377
int ui_out_redirect(struct ui_out *uiout, struct ui_file *outstream)
Definition: ui-out.c:612
void * ui_out_data(struct ui_out *uiout)
Definition: ui-out.c:1066
data_destroy_ftype * data_destroy
Definition: ui-out.h:225
field_skip_ftype * field_skip
Definition: ui-out.h:216
ui_out_end_ftype * end
Definition: ui-out.h:214
Definition: gdbtypes.h:749
wrap_hint_ftype * wrap_hint
Definition: ui-out.h:222
void( table_begin_ftype)(struct ui_out *uiout, int nbrofcols, int nr_rows, const char *tblid)
Definition: ui-out.h:159
ui_flags
Definition: ui-out.h:47
void ui_out_field_core_addr(struct ui_out *uiout, const char *fldname, struct gdbarch *gdbarch, CORE_ADDR address)
Definition: ui-out.c:499
void ui_out_flush(struct ui_out *uiout)
Definition: ui-out.c:606
field_string_ftype * field_string
Definition: ui-out.h:217
int is_mi_like_p
Definition: ui-out.h:226
struct ui_out * ui_out_new(const struct ui_out_impl *impl, void *data, int flags)
Definition: ui-out.c:1096
Definition: value.c:172
void ui_out_field_fmt(struct ui_out *uiout, const char *fldname, const char *format,...) ATTRIBUTE_PRINTF(3
void ui_out_table_body(struct ui_out *uiout)
Definition: ui-out.c:309
table_body_ftype * table_body
Definition: ui-out.h:210
ui_out_begin_ftype * begin
Definition: ui-out.h:213
void( field_string_ftype)(struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *string)
Definition: ui-out.h:181
ui_align
Definition: ui-out.h:38
int ui_out_clear_flags(struct ui_out *uiout, int mask)
Definition: ui-out.c:629
void( ui_out_begin_ftype)(struct ui_out *uiout, enum ui_out_type type, int level, const char *id)
Definition: ui-out.h:169
int ui_out_is_mi_like_p(struct ui_out *uiout)
Definition: ui-out.c:655
void() typedef void( wrap_hint_ftype)(struct ui_out *uiout, char *identstring)
Definition: ui-out.h:196
const struct ui_out_impl * impl
Definition: ui-out.c:103
void ui_out_field_string(struct ui_out *uiout, const char *fldname, const char *string)
Definition: ui-out.c:541
void( field_int_ftype)(struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, int value)
Definition: ui-out.h:175
int ui_out_set_flags(struct ui_out *uiout, int mask)
Definition: ui-out.c:619
static void ATTRIBUTE_PRINTF(6, 0)
Definition: cli-out.c:229
void( field_skip_ftype)(struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname)
Definition: ui-out.h:178
int ui_out_query_field(struct ui_out *uiout, int colno, int *width, int *alignment, char **col_name)
Definition: ui-out.c:1073
int ui_out_get_verblvl(struct ui_out *uiout)
Definition: ui-out.c:648
void ui_out_field_stream(struct ui_out *uiout, const char *fldname, struct ui_file *stream)
Definition: ui-out.c:509
ui_out_type
Definition: ui-out.h:59
table_header_ftype * table_header
Definition: ui-out.h:212
void( flush_ftype)(struct ui_out *uiout)
Definition: ui-out.h:197
void( text_ftype)(struct ui_out *uiout, const char *string)
Definition: ui-out.h:191
field_int_ftype * field_int
Definition: ui-out.h:215
void( table_body_ftype)(struct ui_out *uiout)
Definition: ui-out.h:162
void ui_out_spaces(struct ui_out *uiout, int numspaces)
Definition: ui-out.c:576