From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20092 invoked by alias); 30 Aug 2011 20:58:33 -0000 Received: (qmail 20084 invoked by uid 22791); 30 Aug 2011 20:58:32 -0000 X-SWARE-Spam-Status: No, hits=-6.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS 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; Tue, 30 Aug 2011 20:58:11 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p7UKwAar008809 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 30 Aug 2011 16:58:10 -0400 Received: from localhost.localdomain (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p7UKw8FN005444; Tue, 30 Aug 2011 16:58:09 -0400 From: Phil Muldoon To: Tom Tromey Cc: matt rice , gdb-patches@sourceware.org Subject: Re: [PATCH 4/7] [python] API for macros: Add methods to get a gdb.Macro. References: <1314198654-9008-1-git-send-email-ratmice@gmail.com> <1314198654-9008-5-git-send-email-ratmice@gmail.com> Reply-to: pmuldoon@redhat.com X-URL: http://www.redhat.com Date: Tue, 30 Aug 2011 20:58:00 -0000 In-Reply-To: (Tom Tromey's message of "Tue, 30 Aug 2011 14:37:58 -0600") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) 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-08/txt/msg00638.txt.bz2 Tom Tromey writes: >>>>>> "Phil" == Phil Muldoon writes: > > Phil> You can use a list, and then convert it to a tuple: > Phil> PyList_AsTuple > > Sure, but that just adds another allocation. > I don't understand what the benefit is. There are loads of articles discussing around the old adage: "Tuples are heterogeneous data structures, lists are homogeneous sequences" yadda ya. I don't really mind that distinction, and, I am not strongly swayed one way or the other whether we should return a tuple or a list. My only distinction is that as a tuple is immutable, n'th element will always be n'th element, and so can used a key to a dictionary. So I don't want to bike-shed this, I always return a tuple where the data won't change. Once we return a list/tuple of macros, that list/tuple won't change ever. To get a changed list of data, we would have to make another call to the API. To me, that is a constant list, and should be a tuple. That's the rule I use. And it sends a message as part of the API, "this is the data that I have now, it won't change unless you call me again". That being said, if the performance/memory usage question is relevant, then yeah, converting a list to a tuple probably should be avoided. Cheers, Phil