diff options
Diffstat (limited to 'gdb/mi/mi-console.h')
-rw-r--r-- | gdb/mi/mi-console.h | 36 |
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 |