* lib/gdb.exp (is_x86_like_target): New proc.
[deliverable/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
581e13c1 26/* Create a generic ui_file object with null methods. */
d9fcf2fb
JM
27
28extern struct ui_file *ui_file_new (void);
29
30/* Override methods used by specific implementations of a UI_FILE
581e13c1 31 object. */
d9fcf2fb 32
3e43a32a
MS
33typedef void (ui_file_flush_ftype) (struct ui_file *stream);
34extern void set_ui_file_flush (struct ui_file *stream,
35 ui_file_flush_ftype *flush);
d9fcf2fb 36
581e13c1
MS
37/* NOTE: Both fputs and write methods are available. Default
38 implementations that mapping one onto the other are included. */
3e43a32a
MS
39typedef void (ui_file_write_ftype) (struct ui_file *stream,
40 const char *buf, long length_buf);
41extern void set_ui_file_write (struct ui_file *stream,
42 ui_file_write_ftype *fputs);
43
44typedef void (ui_file_fputs_ftype) (const char *, struct ui_file *stream);
45extern void set_ui_file_fputs (struct ui_file *stream,
46 ui_file_fputs_ftype *fputs);
47
48typedef long (ui_file_read_ftype) (struct ui_file *stream,
49 char *buf, long length_buf);
50extern void set_ui_file_read (struct ui_file *stream,
51 ui_file_read_ftype *fread);
52
53typedef int (ui_file_isatty_ftype) (struct ui_file *stream);
54extern void set_ui_file_isatty (struct ui_file *stream,
55 ui_file_isatty_ftype *isatty);
56
57typedef void (ui_file_rewind_ftype) (struct ui_file *stream);
58extern void set_ui_file_rewind (struct ui_file *stream,
59 ui_file_rewind_ftype *rewind);
60
61typedef void (ui_file_put_method_ftype) (void *object, const char *buffer,
62 long length_buffer);
63typedef void (ui_file_put_ftype) (struct ui_file *stream,
64 ui_file_put_method_ftype *method,
65 void *context);
66extern void set_ui_file_put (struct ui_file *stream, ui_file_put_ftype *put);
d9fcf2fb
JM
67
68typedef void (ui_file_delete_ftype) (struct ui_file * stream);
3e43a32a
MS
69extern void set_ui_file_data (struct ui_file *stream, void *data,
70 ui_file_delete_ftype *delete);
d9fcf2fb
JM
71
72extern void *ui_file_data (struct ui_file *file);
73
74
75extern void gdb_flush (struct ui_file *);
76
77extern void ui_file_delete (struct ui_file *stream);
78
79extern void ui_file_rewind (struct ui_file *stream);
80
81extern int ui_file_isatty (struct ui_file *);
82
3e43a32a
MS
83extern void ui_file_write (struct ui_file *file, const char *buf,
84 long length_buf);
d9fcf2fb 85
581e13c1 86/* NOTE: copies left to right. */
3e43a32a
MS
87extern void ui_file_put (struct ui_file *src,
88 ui_file_put_method_ftype *write, void *dest);
d9fcf2fb
JM
89
90/* Returns a freshly allocated buffer containing the entire contents
91 of FILE (as determined by ui_file_put()) with a NUL character
759ef836 92 appended. LENGTH, if not NULL, is set to the size of the buffer
581e13c1 93 minus that appended NUL. */
d9fcf2fb
JM
94extern char *ui_file_xstrdup (struct ui_file *file, long *length);
95
94af9270
KS
96/* Similar to ui_file_xstrdup, but return a new string allocated on
97 OBSTACK. */
98extern char *ui_file_obsavestring (struct ui_file *file,
99 struct obstack *obstack, long *length);
d9fcf2fb 100
449092f6
CV
101extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
102
581e13c1
MS
103/* Create/open a memory based file. Can be used as a scratch buffer
104 for collecting output. */
d9fcf2fb
JM
105extern struct ui_file *mem_fileopen (void);
106
107
108
766062f6 109/* Open/create a STDIO based UI_FILE using the already open FILE. */
d9fcf2fb
JM
110extern struct ui_file *stdio_fileopen (FILE *file);
111
581e13c1 112/* Open NAME returning an STDIO based UI_FILE. */
d9fcf2fb
JM
113extern struct ui_file *gdb_fopen (char *name, char *mode);
114
e4c242d9
DJ
115/* Create a file which writes to both ONE and TWO. CLOSE_ONE
116 and CLOSE_TWO indicate whether the original files should be
117 closed when the new file is closed. */
118struct ui_file *tee_file_new (struct ui_file *one,
119 int close_one,
120 struct ui_file *two,
121 int close_two);
d9fcf2fb 122#endif
This page took 1.053741 seconds and 4 git commands to generate.