Re: MI: output of -break-insert and -break-watch

Daniel Jacobowitz
2006-02-17T14:18:08Z

On Fri, Feb 17, 2006 at 05:13:52PM +0300, Vladimir Prus wrote:
> > I don't get it. Why is this a problem? It sounds to me like the only
> > reason this would be awkward would be limitations of your front end.
> > If you've done -break-insert you should expect a bkpt response, if
> > you've done -break-watch you should expect a wpt response.
>
> Here's the code I use now to extract breakpoint id from response:
>
> int id = -1;
>
> if (r.hasField("bkpt"))
> id = r["bkpt"]["number"].literal().toInt();
> else if (r.hasField("wpt"))
> id = r["wpt"]["number"].literal().toInt();
> else if (r.hasField("hw-rwpt"))
> id = r["hw-rwpt"]["number"].literal().toInt();
>
> And there's also "hw-awpt", and in future there might be "catchpoint" and
> "fork" and what not.
>
> If I only want to extract the *id* of breakpoint, why do I need to write
> such boilerplate? Or should I write a function that will iterate over all
> fields of 'r', and check if that field has nested field called 'number'?

This still sounds to me like it has more to do with the architecture of
your front-end than it does with meaningful layout of MI. This is only
about the response to -break-insert and -break-watch as far as I
understand. So if you want to avoid the conditional, you can record
which type to expect when you issue the command. Or leave the
conditional; it's not that bad, is it?

--
Daniel Jacobowitz
CodeSourcery