Eliminate TUI/CLI observers duplication
authorPedro Alves <pedro@palves.net>
Wed, 22 Jun 2022 16:03:50 +0000 (17:03 +0100)
committerPedro Alves <pedro@palves.net>
Fri, 24 Jun 2022 18:49:08 +0000 (19:49 +0100)
commit5227abd299c632f66505f827cd221fe4bd7f4d0d
tree401d497c2f2940b2761af9d2dacd8167310981b9
parent86be3050a64c7317754b5682e1a2b6a91f4e3f03
Eliminate TUI/CLI observers duplication

For historical reasons, the CLI and the TUI observers are basically
exact duplicates, except for the downcast:

 cli:
       struct cli_interp *cli = as_cli_interp (interp);
 tui:
       struct interp *tui = as_tui_interp (interp);

and how they get at the interpreter's ui_out:

 cli:
       cli->cli_uiout
 tui:
       tui->interp_ui_out ()

Since interp_ui_out() is a virtual method that also works for the CLI
interpreter, and, both the CLI and the TUI interpreters inherit from
the same base class (cli_interp_base), we can convert the CLI
observers to cast to cli_interp_base instead and use interp_ui_out()
too.  With that, the CLI observers will work for the TUI interpreter
as well.  This lets us completely eliminate the TUI observers.  That's
what this commit does.

Change-Id: Iaf6cf12dfa200ed3ab203a895a72b69dfedbd6e0
gdb/cli/cli-interp.c
gdb/tui/tui-interp.c