]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Small cleanup to interpreter initialization
authorTom Tromey <tom@tromey.com>
Mon, 8 Dec 2025 14:50:48 +0000 (07:50 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 6 Jan 2026 17:12:55 +0000 (10:12 -0700)
interp::inited is currently public, because interp_set does the task
of making sure the interpreter is only initialized a single time.
However, the interpreter can do this job itself, and this member can
be private.

gdb/cli/cli-interp.c
gdb/interps.c
gdb/interps.h
gdb/mi/mi-interp.c
gdb/mi/mi-interp.h
gdb/python/py-dap.c
gdb/tui/tui-interp.c

index f1ba5ccb7c90a23d3490ac583c12744380bdde14..91e9b16483083a86bc7e0b0d99c02bbd321e7e93 100644 (file)
@@ -46,7 +46,6 @@ class cli_interp final : public cli_interp_base
   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;
@@ -180,13 +179,6 @@ cli_interp_base::pre_command_loop ()
   display_gdb_prompt (0);
 }
 
-/* These implement the cli out interpreter: */
-
-void
-cli_interp::init (bool top_level)
-{
-}
-
 void
 cli_interp::resume ()
 {
index d6541a3770438246478e8ba113019db97f65502a..903c52e7cf7b96ed8dc1b311c127895c804ea72c 100644 (file)
@@ -132,11 +132,7 @@ interp_set (struct interp *interp, bool top_level)
     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 ();
index 18159281f7a2922ab0391e38c44272095cd91cb5..2178e6a454e88851ceda0c49ce172522e844db23 100644 (file)
@@ -54,8 +54,14 @@ public:
   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;
@@ -200,12 +206,16 @@ public:
                                  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.
index 3193c68f17fbd565c65905e141eaef7c87903032..a7cfb66f4af2b6b0af5a4256f774e8f92d175294 100644 (file)
@@ -78,7 +78,7 @@ mi_interp::on_command_error ()
 }
 
 void
-mi_interp::init (bool top_level)
+mi_interp::do_init (bool top_level)
 {
   mi_interp *mi = this;
 
index 169a8e12729e8281d46c1b9a3676c67888e9b839..39b39779de73994285f821da8d4f0ec932b1ea4a 100644 (file)
@@ -33,7 +33,7 @@ public:
     : 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;
index 37c1dd536c421ac1ebcd60223e594785494a8219..47d90e51938813a5e476cfad01ce432cbb8976c0 100644 (file)
@@ -34,7 +34,7 @@ public:
 
   ~dap_interp () override = default;
 
-  void init (bool top_level) override;
+  void do_init (bool top_level) override;
 
   void suspend () override
   {
@@ -92,7 +92,7 @@ call_dap_fn (const char *fn_name)
 }
 
 void
-dap_interp::init (bool top_level)
+dap_interp::do_init (bool top_level)
 {
 #if CXX_STD_THREAD
   call_dap_fn ("run");
index ee72f12211ff613f3c9db134679c7176cf65e18c..1316c8bedd69891a37867488bd7d67505bd626ca 100644 (file)
@@ -40,7 +40,7 @@ public:
     : 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;
@@ -63,7 +63,7 @@ tui_exit (void)
 /* 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);