1 /* Output generating routines for GDB CLI. 2 Copyright (C) 1999-2017 Free Software Foundation, Inc. 3 Contributed by Cygnus Solutions. 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 9 the Free Software Foundation; either version 3 of the License, or 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 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 #ifndef CLI_OUT_H 21 #define CLI_OUT_H 22 23 #include "ui-out.h" 24 #include <vector> 25 26 class cli_ui_out : public ui_out 27 { 28 public: 29 30 explicit cli_ui_out (ui_file *stream, ui_out_flags flags); 31 virtual ~cli_ui_out (); 32 33 ui_file *set_stream (ui_file *stream); 34 35 protected: 36 37 virtual void do_table_begin (int nbrofcols, int nr_rows, 38 const char *tblid) override; 39 virtual void do_table_body () override; 40 virtual void do_table_end () override; 41 virtual void do_table_header (int width, ui_align align, 42 const std::string &col_name, 43 const std::string &col_hdr) override; 44 /* Note: level 0 is the top-level so LEVEL is always greater than 45 zero. */ 46 virtual void do_begin (ui_out_type type, const char *id) override; 47 virtual void do_end (ui_out_type type) override; 48 virtual void do_field_int (int fldno, int width, ui_align align, 49 const char *fldname, int value) override; 50 virtual void do_field_skip (int fldno, int width, ui_align align, 51 const char *fldname) override; 52 virtual void do_field_string (int fldno, int width, ui_align align, 53 const char *fldname, const char *string) override; 54 virtual void do_field_fmt (int fldno, int width, ui_align align, 55 const char *fldname, const char *format, va_list args) 56 override ATTRIBUTE_PRINTF (6,0); 57 virtual void do_spaces (int numspaces) override; 58 virtual void do_text (const char *string) override; 59 virtual void do_message (const char *format, va_list args) override 60 ATTRIBUTE_PRINTF (2,0); 61 virtual void do_wrap_hint (const char *identstring) override; 62 virtual void do_flush () override; 63 virtual void do_redirect (struct ui_file *outstream) override; 64 65 bool suppress_output () 66 { return m_suppress_output; } 67 68 private: 69 70 void field_separator (); 71 void out_field_fmt (int fldno, const char *fldname, const char *format, ...) 72 ATTRIBUTE_PRINTF (4, 5); 73 74 std::vector<ui_file *> m_streams; 75 bool m_suppress_output; 76 }; 77 78 extern cli_ui_out *cli_out_new (struct ui_file *stream); 79 80 extern void cli_display_match_list (char **matches, int len, int max); 81 82 #endif 83