explicit cli_interp (const char *name);
~cli_interp () = default;
- void init (bool top_level) override;
void resume () override;
void suspend () override;
void exec (const char *command_str) override;
display_gdb_prompt (0);
}
-/* These implement the cli out interpreter: */
-
-void
-cli_interp::init (bool top_level)
-{
-}
-
void
cli_interp::resume ()
{
interpreter_p = interp->name ();
/* Run the init proc. */
- if (!interp->inited)
- {
- interp->init (top_level);
- interp->inited = true;
- }
+ interp->init (top_level);
/* Do this only after the interpreter is initialized. */
current_uiout = interp->interp_ui_out ();
explicit interp (const char *name);
virtual ~interp () = 0;
- virtual void init (bool top_level)
- {}
+ void init (bool top_level)
+ {
+ if (!m_inited)
+ {
+ do_init (top_level);
+ m_inited = true;
+ }
+ }
virtual void resume () = 0;
virtual void suspend () = 0;
const bfd_byte *data) {}
private:
+ /* Called to perform any needed initialization. */
+ virtual void do_init (bool top_level)
+ {
+ }
+
/* The memory for this is static, it comes from literal strings (e.g. "cli"). */
const char *m_name;
-public:
/* Has the init method been run? */
- bool inited = false;
+ bool m_inited = false;
};
/* Look up the interpreter for NAME, creating one if none exists yet.
}
void
-mi_interp::init (bool top_level)
+mi_interp::do_init (bool top_level)
{
mi_interp *mi = this;
: interp (name)
{}
- void init (bool top_level) override;
+ void do_init (bool top_level) override;
void resume () override;
void suspend () override;
void exec (const char *command_str) override;
~dap_interp () override = default;
- void init (bool top_level) override;
+ void do_init (bool top_level) override;
void suspend () override
{
}
void
-dap_interp::init (bool top_level)
+dap_interp::do_init (bool top_level)
{
#if CXX_STD_THREAD
call_dap_fn ("run");
: cli_interp_base (name)
{}
- void init (bool top_level) override;
+ void do_init (bool top_level) override;
void resume () override;
void suspend () override;
void exec (const char *command_str) override;
/* These implement the TUI interpreter. */
void
-tui_interp::init (bool top_level)
+tui_interp::do_init (bool top_level)
{
/* Install exit handler to leave the screen in a good shape. */
atexit (tui_exit);