From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 41p1GhEkqGHWMQAAWB0awg (envelope-from ) for ; Wed, 01 Dec 2021 20:40:33 -0500 Received: by simark.ca (Postfix, from userid 112) id 56EBB1F0CE; Wed, 1 Dec 2021 20:40:33 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id BF29C1EDF0 for ; Wed, 1 Dec 2021 20:40:32 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2CD9A3858038 for ; Thu, 2 Dec 2021 01:40:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2CD9A3858038 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1638409232; bh=3uojSV0cTIAaKL8L/JV8+OHcSlL16FSZJ71omsN2Ibw=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=pI3VrHO8Jt9KPep1O8K7qFjog8T5fvyvqUIHxYndwbrHMnfgpiNahgv8oummpPmof xq6tsr5DRBKurY/3PtglXEXXnWxJWRvEGzgWBuUjTkeMakOpDT+knvFTgDBJCYHKOp zK2HgX619t3VyoOcqY8x7RV5WL21V30upE3E7Wk0= Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id 7F9653858414 for ; Thu, 2 Dec 2021 01:40:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7F9653858414 X-ASG-Debug-ID: 1638409203-0c856e2e47402d50001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id VnYObl8jp7mzB72k (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 01 Dec 2021 20:40:03 -0500 (EST) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from simark.localdomain (192-222-157-6.qc.cable.ebox.net [192.222.157.6]) by smtp.ebox.ca (Postfix) with ESMTP id 1167D441B21; Wed, 1 Dec 2021 20:40:03 -0500 (EST) X-Barracuda-RBL-IP: 192.222.157.6 X-Barracuda-Effective-Source-IP: 192-222-157-6.qc.cable.ebox.net[192.222.157.6] X-Barracuda-Apparent-Source-IP: 192.222.157.6 To: gdb-patches@sourceware.org Subject: [PATCH 1/2] gdb: return *this in target_waitstatus setters Date: Wed, 1 Dec 2021 20:40:01 -0500 X-ASG-Orig-Subj: [PATCH 1/2] gdb: return *this in target_waitstatus setters Message-Id: <20211202014002.796783-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1638409203 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-Scan-Msg-Size: 4591 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.94340 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Simon Marchi via Gdb-patches Reply-To: Simon Marchi Cc: Simon Marchi Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" From: Simon Marchi While playing with some code creating target_waitstatus objects, I was mildly annoyed by the fact that we can't just return a new target_waitstatus object. We have to do: target_waitstatus ws; ws.set_exited (123); return ws; Make the setters return the "this" object as a reference, such that it's possible to do: return target_waitstatus ().set_exited (123); I initially thought of adding static creation functions, which you would use like: return target_waitstatus::make_exited (123); However, making the setters return a reference to the object achieves pretty much the same thing, with less new code. Change-Id: I45159b7f9fcd9db5b20603480e323020b14ed147 --- gdb/target/waitstatus.h | 48 +++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/gdb/target/waitstatus.h b/gdb/target/waitstatus.h index 48405d222f4e..631847732adb 100644 --- a/gdb/target/waitstatus.h +++ b/gdb/target/waitstatus.h @@ -218,109 +218,125 @@ struct target_waitstatus /* Setters: set the wait status kind plus any associated data. */ - void set_exited (int exit_status) + target_waitstatus &set_exited (int exit_status) { this->reset (); m_kind = TARGET_WAITKIND_EXITED; m_value.exit_status = exit_status; + return *this; } - void set_stopped (gdb_signal sig) + target_waitstatus &set_stopped (gdb_signal sig) { this->reset (); m_kind = TARGET_WAITKIND_STOPPED; m_value.sig = sig; + return *this; } - void set_signalled (gdb_signal sig) + target_waitstatus &set_signalled (gdb_signal sig) { this->reset (); m_kind = TARGET_WAITKIND_SIGNALLED; m_value.sig = sig; + return *this; } - void set_loaded () + target_waitstatus &set_loaded () { this->reset (); m_kind = TARGET_WAITKIND_LOADED; + return *this; } - void set_forked (ptid_t child_ptid) + target_waitstatus &set_forked (ptid_t child_ptid) { this->reset (); m_kind = TARGET_WAITKIND_FORKED; m_value.child_ptid = child_ptid; + return *this; } - void set_vforked (ptid_t child_ptid) + target_waitstatus &set_vforked (ptid_t child_ptid) { this->reset (); m_kind = TARGET_WAITKIND_VFORKED; m_value.child_ptid = child_ptid; + return *this; } - void set_execd (gdb::unique_xmalloc_ptr execd_pathname) + target_waitstatus &set_execd (gdb::unique_xmalloc_ptr execd_pathname) { this->reset (); m_kind = TARGET_WAITKIND_EXECD; m_value.execd_pathname = execd_pathname.release (); + return *this; } - void set_vfork_done () + target_waitstatus &set_vfork_done () { this->reset (); m_kind = TARGET_WAITKIND_VFORK_DONE; + return *this; } - void set_syscall_entry (int syscall_number) + target_waitstatus &set_syscall_entry (int syscall_number) { this->reset (); m_kind = TARGET_WAITKIND_SYSCALL_ENTRY; m_value.syscall_number = syscall_number; + return *this; } - void set_syscall_return (int syscall_number) + target_waitstatus &set_syscall_return (int syscall_number) { this->reset (); m_kind = TARGET_WAITKIND_SYSCALL_RETURN; m_value.syscall_number = syscall_number; + return *this; } - void set_spurious () + target_waitstatus &set_spurious () { this->reset (); m_kind = TARGET_WAITKIND_SPURIOUS; + return *this; } - void set_ignore () + target_waitstatus &set_ignore () { this->reset (); m_kind = TARGET_WAITKIND_IGNORE; + return *this; } - void set_no_history () + target_waitstatus &set_no_history () { this->reset (); m_kind = TARGET_WAITKIND_NO_HISTORY; + return *this; } - void set_no_resumed () + target_waitstatus &set_no_resumed () { this->reset (); m_kind = TARGET_WAITKIND_NO_RESUMED; + return *this; } - void set_thread_created () + target_waitstatus &set_thread_created () { this->reset (); m_kind = TARGET_WAITKIND_THREAD_CREATED; + return *this; } - void set_thread_exited (int exit_status) + target_waitstatus &set_thread_exited (int exit_status) { this->reset (); m_kind = TARGET_WAITKIND_THREAD_EXITED; m_value.exit_status = exit_status; + return *this; } /* Get the kind of this wait status. */ -- 2.33.1