This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] C++-fy struct interp/cli_interp/tui_interp/mi_interp
- From: Simon Marchi <simon dot marchi at polymtl dot ca>
- To: Pedro Alves <palves at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Thu, 02 Feb 2017 23:32:26 -0500
- Subject: Re: [PATCH] C++-fy struct interp/cli_interp/tui_interp/mi_interp
- Authentication-results: sourceware.org; auth=none
- References: <1486077261-15720-1-git-send-email-palves@redhat.com>
On 2017-02-02 18:14, Pedro Alves wrote:
Since "struct interp"-related things showed up on the radar, I decided
to convert the interp hierarchy to real C++ classes...
I didn't want to spend much time on this at this time, so I resisted
doing any significant redesign. I went for 1-1 conversion. I also
didn't try to do the obvious next step of making the class data fields
private. We can probably do more cleaning up and merging of the CLI
and TUI interpreters. Anyhow, I think this is a sufficient
improvement as is.
- The interp->data field disappears, since we can put data in the
interpreter directly now. I left the "init" method in place, but it
now returns void.
- A few places check if the interpreter method is NULL before calling
it, and also check whether the method returns true/false. While
removing the NULL check, I noticed that for some methods, all
implementations always return true. For those cases, I made the
C++-fied method return void instead. I didn't bother splitting that
to a separate patch since it would require touching the exact same
lines twice.
Thanks, even though it's not a complete OO redesign, it's still a good
step.
@@ -236,28 +197,17 @@ interp_set (struct interp *interp, int top_level)
if (!interp->inited)
{
- if (interp->procs->init_proc != NULL)
- {
- interp->data = interp->procs->init_proc (interp, top_level);
- }
- interp->inited = 1;
+ interp->init (top_level);
+ interp->inited = true;
There's a comment just above this block that you can update:
/* Run the init proc. If it fails, try to restore the old interp.
*/