From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 34098 invoked by alias); 11 Nov 2016 01:18:43 -0000 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 Received: (qmail 34042 invoked by uid 89); 11 Nov 2016 01:18:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.8 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=typed, our X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 11 Nov 2016 01:18:41 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BEB827F081; Fri, 11 Nov 2016 01:18:40 +0000 (UTC) Received: from [127.0.0.1] (ovpn03.gateway.prod.ext.phx2.redhat.com [10.5.9.3]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uAB1Idxr000739; Thu, 10 Nov 2016 20:18:40 -0500 Subject: Re: [RFA 00/14] add a smart pointer for PyObject* To: Tom Tromey , gdb-patches@sourceware.org References: <1478497656-11832-1-git-send-email-tom@tromey.com> From: Pedro Alves Message-ID: <7f51de8d-912c-01d9-815f-85cc3c351f0c@redhat.com> Date: Fri, 11 Nov 2016 01:18:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1478497656-11832-1-git-send-email-tom@tromey.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-11/txt/msg00280.txt.bz2 Hi Tom, Great to see this finally happen. Congrats. :-) I read the whole series now, and it all looks great to me. Once patch #1 is fixed, it's fine with me to put it all in. I did wonder about shortening the name to "gdbpy_ref". That's how I end up reading "gdbpy_reference" in my mind after seeing it so many times. :-) You already picked a shorter name as header file name -- py-ref.h -- and that's typed way less often. :-) Anyway, certainly not very important. Just mentioning in case you had already considered but didn't know what others would think. I wonder whether it'd be desirable to add more methods to gdbpy_reference, so you'd have code like: gdbpy_reference sort_func = module.GetAttrString ("execute_frame_filters"); instead of: gdbpy_reference sort_func (PyObject_GetAttrString (module.get (), "execute_frame_filters")); etc. And maybe add some C++ classes that inherit from gdbpy_reference for specific Python types (e.g python tuple or list), which would provide methods that would only make sense for those types. Did you consider things like these? Or maybe you did but thought they'd obfuscate? Also, somewhat related, I briefly looked at making our custom Python types C++ classes before, so they could themselves hold other C++ classes, std::string, etc., though I didn't find how to coerce Python to use operator new with PyTypeObject types. There must be some way though. Thanks, Pedro Alves