summaryrefslogtreecommitdiff
path: root/gdb/mi/mi-console.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/mi/mi-console.h')
-rw-r--r--gdb/mi/mi-console.h36
1 files changed, 31 insertions, 5 deletions
diff --git a/gdb/mi/mi-console.h b/gdb/mi/mi-console.h
index 64355a710d7..289013f9554 100644
--- a/gdb/mi/mi-console.h
+++ b/gdb/mi/mi-console.h
@@ -20,11 +20,37 @@
#ifndef MI_CONSOLE_H
#define MI_CONSOLE_H
-extern struct ui_file *mi_console_file_new (struct ui_file *raw,
- const char *prefix,
- char quote);
+/* An output stream for MI. Wraps a given output stream with a prefix
+ and handles quoting. This stream is locally buffered. */
-extern void mi_console_set_raw (struct ui_file *console,
- struct ui_file *raw);
+class mi_console_file : public ui_file
+{
+public:
+ /* Create a console that wraps the given output stream RAW with the
+ string PREFIX and quoting it with QUOTE. */
+ mi_console_file (ui_file *raw, const char *prefix, char quote);
+
+ /* MI-specific API. */
+ void set_raw (ui_file *raw);
+
+ /* ui_file-specific methods. */
+
+ void flush () override;
+
+ void write (const char *buf, long length_buf) override;
+
+private:
+ /* The wrapped raw output stream. */
+ ui_file *m_raw;
+
+ /* The local buffer. */
+ string_file m_buffer;
+
+ /* The prefix. */
+ const char *m_prefix;
+
+ /* The quote char. */
+ char m_quote;
+};
#endif