]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/ui-file.h
* reloc.c: Add BFD_RELOC_RX_OP_NEG.
[thirdparty/binutils-gdb.git] / gdb / ui-file.h
CommitLineData
d9fcf2fb 1/* UI_FILE - a generic STDIO like output stream.
7b6bb8da 2 Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010, 2011
4c38e0a4 3 Free Software Foundation, Inc.
d9fcf2fb
JM
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
d9fcf2fb
JM
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
d9fcf2fb
JM
19
20#ifndef UI_FILE_H
21#define UI_FILE_H
22
94af9270 23struct obstack;
d9fcf2fb
JM
24struct ui_file;
25
26/* Create a generic ui_file object with null methods. */
27
28extern struct ui_file *ui_file_new (void);
29
30/* Override methods used by specific implementations of a UI_FILE
31 object. */
32
33typedef void (ui_file_flush_ftype) (struct ui_file * stream);
34extern void set_ui_file_flush (struct ui_file *stream, 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. */
38typedef void (ui_file_write_ftype) (struct ui_file * stream, const char *buf, long length_buf);
39extern void set_ui_file_write (struct ui_file *stream, ui_file_write_ftype *fputs);
40
41typedef void (ui_file_fputs_ftype) (const char *, struct ui_file * stream);
42extern void set_ui_file_fputs (struct ui_file *stream, ui_file_fputs_ftype * fputs);
43
449092f6
CV
44typedef long (ui_file_read_ftype) (struct ui_file * stream, char *buf, long length_buf);
45extern void set_ui_file_read (struct ui_file *stream, ui_file_read_ftype *fread);
46
d9fcf2fb
JM
47typedef int (ui_file_isatty_ftype) (struct ui_file * stream);
48extern void set_ui_file_isatty (struct ui_file *stream, ui_file_isatty_ftype * isatty);
49
50typedef void (ui_file_rewind_ftype) (struct ui_file * stream);
51extern void set_ui_file_rewind (struct ui_file *stream, ui_file_rewind_ftype * rewind);
52
53typedef void (ui_file_put_method_ftype) (void *object, const char *buffer, long length_buffer);
54typedef void (ui_file_put_ftype) (struct ui_file *stream, ui_file_put_method_ftype * method, void *context);
55extern void set_ui_file_put (struct ui_file *stream, ui_file_put_ftype * put);
56
57typedef void (ui_file_delete_ftype) (struct ui_file * stream);
58extern void set_ui_file_data (struct ui_file *stream, void *data, ui_file_delete_ftype * delete);
59
60extern void *ui_file_data (struct ui_file *file);
61
62
63extern void gdb_flush (struct ui_file *);
64
65extern void ui_file_delete (struct ui_file *stream);
66
67extern void ui_file_rewind (struct ui_file *stream);
68
69extern int ui_file_isatty (struct ui_file *);
70
71extern void ui_file_write (struct ui_file *file, const char *buf, long length_buf);
72
73/* NOTE: copies left to right */
74extern void ui_file_put (struct ui_file *src, ui_file_put_method_ftype *write, void *dest);
75
76/* Returns a freshly allocated buffer containing the entire contents
77 of FILE (as determined by ui_file_put()) with a NUL character
759ef836
PA
78 appended. LENGTH, if not NULL, is set to the size of the buffer
79 minus that appended NUL. */
d9fcf2fb
JM
80extern char *ui_file_xstrdup (struct ui_file *file, long *length);
81
94af9270
KS
82/* Similar to ui_file_xstrdup, but return a new string allocated on
83 OBSTACK. */
84extern char *ui_file_obsavestring (struct ui_file *file,
85 struct obstack *obstack, long *length);
d9fcf2fb 86
449092f6
CV
87extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
88
d9fcf2fb
JM
89/* Create/open a memory based file. Can be used as a scratch buffer
90 for collecting output. */
91extern struct ui_file *mem_fileopen (void);
92
93
94
95/* Open/create a an STDIO based UI_FILE using the already open FILE. */
96extern struct ui_file *stdio_fileopen (FILE *file);
97
98/* Open NAME returning an STDIO based UI_FILE. */
99extern struct ui_file *gdb_fopen (char *name, char *mode);
100
e4c242d9
DJ
101/* Create a file which writes to both ONE and TWO. CLOSE_ONE
102 and CLOSE_TWO indicate whether the original files should be
103 closed when the new file is closed. */
104struct ui_file *tee_file_new (struct ui_file *one,
105 int close_one,
106 struct ui_file *two,
107 int close_two);
d9fcf2fb 108#endif