/* Output generating routines for GDB.
- Copyright (C) 1999-2020 Free Software Foundation, Inc.
+ Copyright (C) 1999-2022 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
Written by Fernando Nasser for Cygnus.
CORE_ADDR address);
void field_string (const char *fldname, const char *string,
const ui_file_style &style = ui_file_style ());
- void field_string (const char *fldname, const std::string &string);
+ void field_string (const char *fldname, const std::string &string,
+ const ui_file_style &style = ui_file_style ())
+ {
+ field_string (fldname, string.c_str (), style);
+ }
void field_stream (const char *fldname, string_file &stream,
const ui_file_style &style = ui_file_style ());
void field_skip (const char *fldname);
void spaces (int numspaces);
void text (const char *string);
+ void text (const std::string &string) { text (string.c_str ()); }
/* Output a printf-style formatted string. In addition to the usual
printf format specs, this supports a few GDB-specific
uiout->field_signed(), uiout_>field_string() etc. calls when
the formatted message is translatable. E.g.:
- uiout->message (_("\nWatchpoint %pF deleted because the program has "
- "left the block in\n"
- "which its expression is valid.\n"),
- signed_field ("wpnum", b->number));
+ uiout->message (_("\nWatchpoint %pF deleted because the program has "
+ "left the block in\n"
+ "which its expression is valid.\n"),
+ signed_field ("wpnum", b->number));
- '%p[' - output the following text in a specified style.
'%p]' - output the following text in the default style.
void vmessage (const ui_file_style &in_style,
const char *format, va_list args) ATTRIBUTE_PRINTF (3, 0);
- void wrap_hint (const char *identstring);
+ void wrap_hint (int indent);
void flush ();
escapes. */
virtual bool can_emit_style_escape () const = 0;
+ /* An object that starts and finishes a progress meter. */
+ class progress_meter
+ {
+ public:
+ /* SHOULD_PRINT indicates whether something should be printed for a tty. */
+ progress_meter (struct ui_out *uiout, const std::string &name,
+ bool should_print)
+ : m_uiout (uiout)
+ {
+ m_uiout->do_progress_start (name, should_print);
+ }
+
+ ~progress_meter ()
+ {
+ m_uiout->do_progress_notify (1.0);
+ m_uiout->do_progress_end ();
+ }
+
+ progress_meter (const progress_meter &) = delete;
+ progress_meter &operator= (const progress_meter &) = delete;
+
+ /* Emit some progress for this progress meter. HOWMUCH may range
+ from 0.0 to 1.0. */
+ void progress (double howmuch)
+ {
+ m_uiout->do_progress_notify (howmuch);
+ }
+
+ private:
+
+ struct ui_out *m_uiout;
+ };
+
protected:
virtual void do_table_begin (int nbrofcols, int nr_rows, const char *tblid)
virtual void do_message (const ui_file_style &style,
const char *format, va_list args)
ATTRIBUTE_PRINTF (3,0) = 0;
- virtual void do_wrap_hint (const char *identstring) = 0;
+ virtual void do_wrap_hint (int indent) = 0;
virtual void do_flush () = 0;
virtual void do_redirect (struct ui_file *outstream) = 0;
+ virtual void do_progress_start (const std::string &, bool) = 0;
+ virtual void do_progress_notify (double) = 0;
+ virtual void do_progress_end () = 0;
+
/* Set as not MI-like by default. It is overridden in subclasses if
necessary. */