From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22565 invoked by alias); 16 Mar 2011 20:02:32 -0000 Received: (qmail 22550 invoked by uid 22791); 16 Mar 2011 20:02:30 -0000 X-SWARE-Spam-Status: No, hits=-6.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 16 Mar 2011 20:02:17 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p2GK2E5f022428 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 16 Mar 2011 16:02:14 -0400 Received: from localhost.localdomain (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p2GK2DiL015326; Wed, 16 Mar 2011 16:02:13 -0400 From: Phil Muldoon To: Eli Zaretskii Cc: gdb-patches@sourceware.org Subject: Re: [python] [patch] Add is_valid to several classes In-Reply-To: <83r5a6q39z.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 16 Mar 2011 21:22:16 +0200") References: <83r5a6q39z.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Reply-to: pmuldoon@redhat.com X-URL: http://www.redhat.com Date: Wed, 16 Mar 2011 20:04:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-03/txt/msg00875.txt.bz2 Eli Zaretskii writes: >> From: Phil Muldoon >> Date: Wed, 16 Mar 2011 16:02:44 +0000 >> >> --- a/gdb/NEWS >> +++ b/gdb/NEWS >> @@ -38,6 +38,10 @@ >> >> * Python scripting >> >> + ** Symbols, Symbol Table, Symbol Table and Line, Object Files, >> + Inferior, Inferior Thread, Blocks, and Block Iterator APIs now >> + have an is_valid method. >> + > > This part is okay. Thanks. >> +@defmethod Inferior is_valid >> +Returns true if the @code{gdb.Inferior} object is valid, false if > ^^^^ ^^^^^ > You mean @code{true} and @code{false}, right? These are Python > symbols, aren't they? > > Same comment on the other uses of "true" and "false". As Paul notes, probably should be @code{True} and @code{False} for Python notation. >> +A @code{gdb.Objfile} object can become invalid if the object file it >> +refers to does not exist in @value{GDBN} any longer. > > "File does not exist in GDB" sounds awkward: GDB is not a filesystem. > How about "file is not loaded in GDB" instead? > >> +Returns true if the @code{gdb.Block} object is valid, false if not. A Okay. ^^ > Two spaces. Oops. >> +@code{gdb.Block} supports via the Python method @code{iter} function. > > Did you really mean to say "Python method `iter' function"? I think > either "method" or "function", no? iter() is a built in Python function (nothing to do with GDB), that extracts an iterator from a Python object if the object supports it. I don't mind how we word it. It was purely illustrative. In fact in Python there are many ways to invoke iteration in an object that supports it. The "in" keyword for example (IE, for x in y). What do you think? >> +A @code{gdb.Symbol} object can become invalid if the symbol it refers >> +to does not exist in @value{GDBN} any longer. > > How can a symbol cease to exist? The canonical case for this is the "file" command. The test cases in the patch proves that (and in fact the test case library has a specialized function: "gdb_unload"). So symbol, symbol tables, symbol table and line, objfiles will be unloaded in that context. I'm not sure why a user would use this case, but the fact that it can exist means we have to deal with validating the object lifetime. >> +if not. A @code{gdb.Symtab_and_line} object can become invalid if the >> +Symbol table and line object it refers to does not exist in >> +@value{GDBN} any longer. > > Likewise here: does GDB unload symtabs once they were loaded? > >> +A @code{gdb.Symtab} object can become invalid if the symbol table it >> +refers to does not exist in @value{GDBN} any longer. Thanks Phil