From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6385 invoked by alias); 17 Feb 2006 14:51:34 -0000 Received: (qmail 6361 invoked by uid 22791); 17 Feb 2006 14:51:33 -0000 X-Spam-Check-By: sourceware.org Received: from main.gmane.org (HELO ciao.gmane.org) (80.91.229.2) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 17 Feb 2006 14:51:31 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FA6wz-0006mO-O2 for gdb@sources.redhat.com; Fri, 17 Feb 2006 15:51:13 +0100 Received: from zigzag.lvk.cs.msu.su ([158.250.17.23]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 17 Feb 2006 15:51:13 +0100 Received: from ghost by zigzag.lvk.cs.msu.su with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 17 Feb 2006 15:51:13 +0100 To: gdb@sources.redhat.com From: Vladimir Prus Subject: Re: MI: output of -break-insert and -break-watch Date: Fri, 17 Feb 2006 15:00:00 -0000 Message-ID: References: <20060217135634.GA18641@nevyn.them.org> <20060217141804.GA19339@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit User-Agent: KNode/0.8.2 X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-02/txt/msg00184.txt.bz2 Daniel Jacobowitz wrote: > 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. Well, I'm not sure it's specific to KDevelop: 1. All frontends will want to know the id of the set breakpoint, as that's the only information that allows to modify the breakpoint later. 2. The above "bkpt" and so on are MI-specific names which must be hardcoded in frontend somewhere. > 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. And if I have to remember the type of breakpoint command I've sent, then what's the use of the different naming of field in reply -- it clearly not need to recover the type of breakpoint, as I've already remembered it. > Or leave the conditional; it's not that bad, is it? Well, it just got another "if" clause for "hw-awpt", and I'd expect this to grow by a couple over time. No, it's no a big architectural thing, but still an annoyance. - Volodya