]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/cli-out.h
sim: bfin: initial bf60x support
[thirdparty/binutils-gdb.git] / gdb / cli-out.h
index 7d5b4febba5435b1c568547d4107f8e11a81b881..340161822698b8d19ea99a3967b52e66331701a4 100644 (file)
@@ -1,5 +1,5 @@
 /* Output generating routines for GDB CLI.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2023 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions.
 
    This file is part of GDB.
 #define CLI_OUT_H
 
 #include "ui-out.h"
+#include <chrono>
 #include <vector>
 
 class cli_ui_out : public ui_out
 {
 public:
 
-  explicit cli_ui_out (ui_file *stream, ui_out_flags flags);
+  explicit cli_ui_out (ui_file *stream, ui_out_flags flags = ui_source_list);
   virtual ~cli_ui_out ();
 
   ui_file *set_stream (ui_file *stream);
@@ -67,10 +68,15 @@ protected:
   virtual void do_message (const ui_file_style &style,
                           const char *format, va_list args) override
     ATTRIBUTE_PRINTF (3,0);
-  virtual void do_wrap_hint (const char *identstring) override;
+  virtual void do_wrap_hint (int indent) override;
   virtual void do_flush () override;
   virtual void do_redirect (struct ui_file *outstream) override;
 
+  virtual void do_progress_start () override;
+  virtual void do_progress_notify (const std::string &, const char *,
+                                  double, double) override;
+  virtual void do_progress_end () override;
+
   bool suppress_output ()
   { return m_suppress_output; }
 
@@ -80,9 +86,26 @@ private:
 
   std::vector<ui_file *> m_streams;
   bool m_suppress_output;
-};
 
-extern cli_ui_out *cli_out_new (struct ui_file *stream);
+  /* The state of a recent progress update.  */
+  struct cli_progress_info
+  {
+    /* Position of the progress indicator.  */
+    int pos;
+    /* The current state.  */
+    progress_update::state state;
+    /* Progress indicator's time of last update.  */
+    std::chrono::steady_clock::time_point last_update;
+
+    cli_progress_info ()
+      : pos (0), state (progress_update::START)
+    {}
+  };
+
+  /* Stack of progress info.  */
+  std::vector<cli_progress_info> m_progress_info;
+  void clear_progress_notify ();
+};
 
 extern void cli_display_match_list (char **matches, int len, int max);