From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 893 invoked by alias); 25 Apr 2019 19:25:08 -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 871 invoked by uid 89); 25 Apr 2019 19:25:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-5.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1041 X-HELO: gateway36.websitewelcome.com Received: from gateway36.websitewelcome.com (HELO gateway36.websitewelcome.com) (192.185.200.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 25 Apr 2019 19:25:04 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway36.websitewelcome.com (Postfix) with ESMTP id A5577400F884F for ; Thu, 25 Apr 2019 13:43:28 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id JjzShgBLBYTGMJjzShm26L; Thu, 25 Apr 2019 14:25:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=1LSUTEwyr4piS5jtpp1+lNTqJMrWYOmrBJfoNVZmYQQ=; b=VHWbFQVbE6pbxOozi63LC+rqgV BNqN+85ZfqgbwkfDh/iNFTFseS/Syt6ZpHPdZhsfpcPaq28c8nZjYbOgDMaFgvHnS9qacsfO0u1dt 0sczU4T5bDp1X9MSMeLbWNfU7; Received: from 97-122-168-123.hlrn.qwest.net ([97.122.168.123]:59086 helo=murgatroyd) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1hJjzR-001kBE-P5; Thu, 25 Apr 2019 14:25:01 -0500 From: Tom Tromey To: Jan Vrany Cc: gdb-patches@sourceware.org, Didier Nadeau Subject: Re: [RFC 2/8] Use classes to represent MI Command instead of structures References: <20190418152337.6376-1-jan.vrany@fit.cvut.cz> <20190418152337.6376-3-jan.vrany@fit.cvut.cz> Date: Thu, 25 Apr 2019 19:25:00 -0000 In-Reply-To: <20190418152337.6376-3-jan.vrany@fit.cvut.cz> (Jan Vrany's message of "Thu, 18 Apr 2019 16:23:31 +0100") Message-ID: <87a7gd99bn.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2019-04/txt/msg00558.txt.bz2 >>>>> "Jan" == Jan Vrany writes: Jan> +std::unique_ptr> Jan> +mi_command::do_suppress_notification () Jan> +{ Jan> + if (m_suppress_notification != NULL) Jan> + return std::unique_ptr> ( Jan> + new scoped_restore_tmpl (m_suppress_notification, 1)); Jan> + Jan> + return std::unique_ptr> (); Rather than returning a unique_ptr, I think this could directly return a scoped_restore_tmpl. Then, if m_suppress_notification is NULL, just use the address of a dummy variable instead. Jan> +void Jan> +mi_command_cli::invoke (struct mi_parse *parse) Jan> +{ Jan> + std::unique_ptr> restore Jan> + = do_suppress_notification (); Alternatively, if all invoke methods have to start this way, make invoke non-virtual and then have it do the setup and then call a virtual do_invoke function. Then invoke can use a gdb::optional<...>. Tom