GDB (xrefs)
/tmp/gdb-7.10/gdb/ui-file.h
Go to the documentation of this file.
1 /* UI_FILE - a generic STDIO like output stream.
2  Copyright (C) 1999-2015 Free Software Foundation, Inc.
3 
4  This file is part of GDB.
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 
19 #ifndef UI_FILE_H
20 #define UI_FILE_H
21 
22 struct obstack;
23 struct ui_file;
24 
25 /* Create a generic ui_file object with null methods. */
26 
27 extern struct ui_file *ui_file_new (void);
28 
29 /* Override methods used by specific implementations of a UI_FILE
30  object. */
31 
32 typedef void (ui_file_flush_ftype) (struct ui_file *stream);
33 extern void set_ui_file_flush (struct ui_file *stream,
34  ui_file_flush_ftype *flush);
35 
36 /* NOTE: Both fputs and write methods are available. Default
37  implementations that mapping one onto the other are included. */
38 typedef void (ui_file_write_ftype) (struct ui_file *stream,
39  const char *buf, long length_buf);
40 extern void set_ui_file_write (struct ui_file *stream,
41  ui_file_write_ftype *fputs);
42 
43 typedef void (ui_file_fputs_ftype) (const char *, struct ui_file *stream);
44 extern void set_ui_file_fputs (struct ui_file *stream,
45  ui_file_fputs_ftype *fputs);
46 
47 /* This version of "write" is safe for use in signal handlers.
48  It's not guaranteed that all existing output will have been
49  flushed first.
50  Implementations are also free to ignore some or all of the request.
51  fputs_async is not provided as the async versions are rarely used,
52  no point in having both for a rarely used interface. */
53 typedef void (ui_file_write_async_safe_ftype)
54  (struct ui_file *stream, const char *buf, long length_buf);
56  (struct ui_file *stream, ui_file_write_async_safe_ftype *write_async_safe);
57 
58 typedef long (ui_file_read_ftype) (struct ui_file *stream,
59  char *buf, long length_buf);
60 extern void set_ui_file_read (struct ui_file *stream,
61  ui_file_read_ftype *fread);
62 
63 typedef int (ui_file_isatty_ftype) (struct ui_file *stream);
64 extern void set_ui_file_isatty (struct ui_file *stream,
65  ui_file_isatty_ftype *isatty);
66 
67 typedef void (ui_file_rewind_ftype) (struct ui_file *stream);
68 extern void set_ui_file_rewind (struct ui_file *stream,
69  ui_file_rewind_ftype *rewind);
70 
71 typedef void (ui_file_put_method_ftype) (void *object, const char *buffer,
72  long length_buffer);
73 typedef void (ui_file_put_ftype) (struct ui_file *stream,
75  void *context);
76 extern void set_ui_file_put (struct ui_file *stream, ui_file_put_ftype *put);
77 
78 typedef void (ui_file_delete_ftype) (struct ui_file * stream);
79 extern void set_ui_file_data (struct ui_file *stream, void *data,
81 
82 typedef int (ui_file_fseek_ftype) (struct ui_file *stream, long offset,
83  int whence);
84 extern void set_ui_file_fseek (struct ui_file *stream,
85  ui_file_fseek_ftype *fseek_ptr);
86 
87 extern void *ui_file_data (struct ui_file *file);
88 
89 
90 extern void gdb_flush (struct ui_file *);
91 
92 extern void ui_file_delete (struct ui_file *stream);
93 
94 extern void ui_file_rewind (struct ui_file *stream);
95 
96 extern int ui_file_isatty (struct ui_file *);
97 
98 extern void ui_file_write (struct ui_file *file, const char *buf,
99  long length_buf);
100 
101 /* A wrapper for ui_file_write that is suitable for use by
102  ui_file_put. */
103 
104 extern void ui_file_write_for_put (void *data, const char *buffer,
105  long length_buffer);
106 
107 extern void ui_file_write_async_safe (struct ui_file *file, const char *buf,
108  long length_buf);
109 
110 /* NOTE: copies left to right. */
111 extern void ui_file_put (struct ui_file *src,
112  ui_file_put_method_ftype *write, void *dest);
113 
114 /* Returns a freshly allocated buffer containing the entire contents
115  of FILE (as determined by ui_file_put()) with a NUL character
116  appended. LENGTH, if not NULL, is set to the size of the buffer
117  minus that appended NUL. */
118 extern char *ui_file_xstrdup (struct ui_file *file, long *length);
119 
120 /* Similar to ui_file_xstrdup, but return a new string allocated on
121  OBSTACK. */
122 extern char *ui_file_obsavestring (struct ui_file *file,
123  struct obstack *obstack, long *length);
124 
125 extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
126 
127 extern int ui_file_fseek (struct ui_file *file, long offset, int whence);
128 
129 /* Create/open a memory based file. Can be used as a scratch buffer
130  for collecting output. */
131 extern struct ui_file *mem_fileopen (void);
132 
133 
134 
135 /* Open/create a STDIO based UI_FILE using the already open FILE. */
136 extern struct ui_file *stdio_fileopen (FILE *file);
137 
138 /* Create a ui_file from stderr. */
139 extern struct ui_file *stderr_fileopen (void);
140 
141 
142 /* Open NAME returning an STDIO based UI_FILE. */
143 extern struct ui_file *gdb_fopen (const char *name, const char *mode);
144 
145 /* Create a file which writes to both ONE and TWO. CLOSE_ONE
146  and CLOSE_TWO indicate whether the original files should be
147  closed when the new file is closed. */
148 extern struct ui_file *tee_file_new (struct ui_file *one,
149  int close_one,
150  struct ui_file *two,
151  int close_two);
152 #endif
void set_ui_file_rewind(struct ui_file *stream, ui_file_rewind_ftype *rewind)
Definition: ui-file.c:270
void( ui_file_fputs_ftype)(const char *, struct ui_file *stream)
Definition: ui-file.h:43
void set_ui_file_isatty(struct ui_file *stream, ui_file_isatty_ftype *isatty)
Definition: ui-file.c:264
void gdb_flush(struct ui_file *)
Definition: ui-file.c:192
void( ui_file_delete_ftype)(struct ui_file *stream)
Definition: ui-file.h:78
void set_ui_file_fseek(struct ui_file *stream, ui_file_fseek_ftype *fseek_ptr)
Definition: ui-file.c:308
void ui_file_write(struct ui_file *file, const char *buf, long length_buf)
Definition: ui-file.c:218
long ui_file_read(struct ui_file *file, char *buf, long length_buf)
Definition: ui-file.c:240
void( ui_file_write_ftype)(struct ui_file *stream, const char *buf, long length_buf)
Definition: ui-file.h:38
void set_ui_file_write(struct ui_file *stream, ui_file_write_ftype *fputs)
Definition: ui-file.c:282
struct ui_file * gdb_fopen(const char *name, const char *mode)
Definition: ui-file.c:723
int ui_file_fseek(struct ui_file *file, long offset, int whence)
Definition: ui-file.c:246
struct ui_file * tee_file_new(struct ui_file *one, int close_one, struct ui_file *two, int close_two)
Definition: ui-file.c:750
const char *const name
Definition: aarch64-tdep.c:68
struct ui_file * ui_file_new(void)
Definition: ui-file.c:57
void ui_file_delete(struct ui_file *stream)
Definition: ui-file.c:76
char * ui_file_obsavestring(struct ui_file *file, struct obstack *obstack, long *length)
Definition: ui-file.c:368
ui_file_delete_ftype * to_delete
Definition: ui-file.c:47
long( ui_file_read_ftype)(struct ui_file *stream, char *buf, long length_buf)
Definition: ui-file.h:58
struct ui_file * stderr_fileopen(void)
Definition: ui-file.c:683
int( ui_file_fseek_ftype)(struct ui_file *stream, long offset, int whence)
Definition: ui-file.h:82
void( ui_file_flush_ftype)(struct ui_file *stream)
Definition: ui-file.h:32
struct ui_file * stdio_fileopen(FILE *file)
Definition: ui-file.c:717
void set_ui_file_fputs(struct ui_file *stream, ui_file_fputs_ftype *fputs)
Definition: ui-file.c:302
void set_ui_file_write_async_safe(struct ui_file *stream, ui_file_write_async_safe_ftype *write_async_safe)
Definition: ui-file.c:289
void( ui_file_put_ftype)(struct ui_file *stream, ui_file_put_method_ftype *method, void *context)
Definition: ui-file.h:73
void ui_file_put(struct ui_file *src, ui_file_put_method_ftype *write, void *dest)
Definition: ui-file.c:210
void set_ui_file_put(struct ui_file *stream, ui_file_put_ftype *put)
Definition: ui-file.c:276
const char const char int
Definition: command.h:229
void set_ui_file_read(struct ui_file *stream, ui_file_read_ftype *fread)
Definition: ui-file.c:296
int( ui_file_isatty_ftype)(struct ui_file *stream)
Definition: ui-file.h:63
int offset
Definition: agent.c:65
Definition: buffer.h:23
void set_ui_file_data(struct ui_file *stream, void *data, ui_file_delete_ftype *to_delete)
Definition: ui-file.c:314
struct ui_file * mem_fileopen(void)
Definition: ui-file.c:427
void( ui_file_write_async_safe_ftype)(struct ui_file *stream, const char *buf, long length_buf)
Definition: ui-file.h:54
void ui_file_write_for_put(void *data, const char *buffer, long length_buffer)
Definition: ui-file.c:226
void set_ui_file_flush(struct ui_file *stream, ui_file_flush_ftype *flush)
Definition: ui-file.c:258
void ui_file_write_async_safe(struct ui_file *file, const char *buf, long length_buf)
Definition: ui-file.c:232
void ui_file_rewind(struct ui_file *stream)
Definition: ui-file.c:204
char * ui_file_xstrdup(struct ui_file *file, long *length)
Definition: ui-file.c:345
int ui_file_isatty(struct ui_file *)
Definition: ui-file.c:198
void( ui_file_rewind_ftype)(struct ui_file *stream)
Definition: ui-file.h:67
void * ui_file_data(struct ui_file *file)
Definition: ui-file.c:183
void( ui_file_put_method_ftype)(void *object, const char *buffer, long length_buffer)
Definition: ui-file.h:71