[{"id":35452,"web_url":"https://patchwork.libcamera.org/comment/35452/","msgid":"<20250815145744.GE8360@pendragon.ideasonboard.com>","date":"2025-08-15T14:57:44","subject":"Re: [RFC PATCH v2 2/3] utils: codegen: ipc: Default special member\n\tops","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Fri, Aug 15, 2025 at 02:31:37PM +0200, Barnabás Pőcze wrote:\n> Default the copy/move constructor/assignment operators so that\n> they are available if possible. This can allow more efficient\n> passing and construction of these objects.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n> changes in v2: none\n> ---\n>  .../libcamera_templates/definition_functions.tmpl           | 6 ++++++\n>  1 file changed, 6 insertions(+)\n> \n> diff --git a/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl b/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n> index 16d11c309..3a57a3c2c 100644\n> --- a/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n> +++ b/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n> @@ -39,6 +39,12 @@ public:\n>  {%- endfor %}\n>  \t{\n>  \t}\n> +\n> +\t{{struct.mojom_name}}(const {{struct.mojom_name}} &) = default;\n> +\t{{struct.mojom_name}} &operator=(const {{struct.mojom_name}} &) = default;\n> +\t{{struct.mojom_name}}({{struct.mojom_name}} &&) = default;\n> +\t{{struct.mojom_name}} &operator=({{struct.mojom_name}} &&) = default;\n> +\t~{{struct.mojom_name}}() = default;\n\nWe usually declare them in this order:\n\n\t{{struct.mojom_name}}(const {{struct.mojom_name}} &) = default;\n\t{{struct.mojom_name}}({{struct.mojom_name}} &&) = default;\n\n\t~{{struct.mojom_name}}() = default;\n\n\t{{struct.mojom_name}} &operator=(const {{struct.mojom_name}} &) = default;\n\t{{struct.mojom_name}} &operator=({{struct.mojom_name}} &&) = default;\n\nDo we need to explicitly default the destructor, won't the compiler do\nit ? And isn't it the case for the copy and move constructors/assignment\noperators as well actually ? I'm not sure to see what this patch brings,\nit's already possible to copy and move instances of the IPA structures\nas far as I can see.\n\n>  #endif\n> \n>  {% for field in struct.fields %}","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 753E5BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 15 Aug 2025 14:58:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 32CAB6924E;\n\tFri, 15 Aug 2025 16:58:06 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8758D61443\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 15 Aug 2025 16:58:04 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 2E21056D;\n\tFri, 15 Aug 2025 16:57:09 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"g6oNjNs3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1755269829;\n\tbh=Pv+0O/F6WkG9VU1ghtOLgJxsidouwE+FO0RseZx98Lk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=g6oNjNs3JWeDPYnpPMv7gbtYfRQzy2hifL/ofag+JDJWHMw++UW2HnPjm5EVWwZ4G\n\tU1s/WL/tON61LYsROQ0Txiif8ln0jTHPaYashv7Lg11Byy0raYbpwQ97SJ5lXKYXkW\n\t5cBsMOCHsXhZv9fvO3Aq/N0QP91NvRDqLxkMWRJs=","Date":"Fri, 15 Aug 2025 17:57:44 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"Re: [RFC PATCH v2 2/3] utils: codegen: ipc: Default special member\n\tops","Message-ID":"<20250815145744.GE8360@pendragon.ideasonboard.com>","References":"<20250815123138.2213654-1-barnabas.pocze@ideasonboard.com>\n\t<20250815123138.2213654-2-barnabas.pocze@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20250815123138.2213654-2-barnabas.pocze@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":35454,"web_url":"https://patchwork.libcamera.org/comment/35454/","msgid":"<cc1fbf11-5cfd-4c26-b609-23a817d2b307@ideasonboard.com>","date":"2025-08-15T15:08:24","subject":"Re: [RFC PATCH v2 2/3] utils: codegen: ipc: Default special member\n\tops","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2025. 08. 15. 16:57 keltezéssel, Laurent Pinchart írta:\n> On Fri, Aug 15, 2025 at 02:31:37PM +0200, Barnabás Pőcze wrote:\n>> Default the copy/move constructor/assignment operators so that\n>> they are available if possible. This can allow more efficient\n>> passing and construction of these objects.\n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n>> ---\n>> changes in v2: none\n>> ---\n>>   .../libcamera_templates/definition_functions.tmpl           | 6 ++++++\n>>   1 file changed, 6 insertions(+)\n>>\n>> diff --git a/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl b/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n>> index 16d11c309..3a57a3c2c 100644\n>> --- a/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n>> +++ b/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n>> @@ -39,6 +39,12 @@ public:\n>>   {%- endfor %}\n>>   \t{\n>>   \t}\n>> +\n>> +\t{{struct.mojom_name}}(const {{struct.mojom_name}} &) = default;\n>> +\t{{struct.mojom_name}} &operator=(const {{struct.mojom_name}} &) = default;\n>> +\t{{struct.mojom_name}}({{struct.mojom_name}} &&) = default;\n>> +\t{{struct.mojom_name}} &operator=({{struct.mojom_name}} &&) = default;\n>> +\t~{{struct.mojom_name}}() = default;\n> \n> We usually declare them in this order:\n> \n> \t{{struct.mojom_name}}(const {{struct.mojom_name}} &) = default;\n> \t{{struct.mojom_name}}({{struct.mojom_name}} &&) = default;\n> \n> \t~{{struct.mojom_name}}() = default;\n> \n> \t{{struct.mojom_name}} &operator=(const {{struct.mojom_name}} &) = default;\n> \t{{struct.mojom_name}} &operator=({{struct.mojom_name}} &&) = default;\n> \n> Do we need to explicitly default the destructor, won't the compiler do\n> it ? And isn't it the case for the copy and move constructors/assignment\n> operators as well actually ? I'm not sure to see what this patch brings,\n> it's already possible to copy and move instances of the IPA structures\n> as far as I can see.\n\nAhh, you're right... sorry I made a mistake while testing. All of them\nshould already be implicitly generated. So this patch changes nothing,\njust makes that explicit. Let's ignore it.\n\n\nRegards,\nBarnabás Pőcze\n\n> \n>>   #endif\n>>\n>>   {% for field in struct.fields %}\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D2C7FBEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 15 Aug 2025 15:08:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7BEC169251;\n\tFri, 15 Aug 2025 17:08:28 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CE3796924E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 15 Aug 2025 17:08:26 +0200 (CEST)","from [192.168.33.21] (185.221.141.188.nat.pool.zt.hu\n\t[185.221.141.188])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BF0D663B;\n\tFri, 15 Aug 2025 17:07:31 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"s8mnEE1/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1755270451;\n\tbh=iq1CXBN7RhOHRXkfKmVSROAvu5TwQEWVGjUxE95dcz8=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=s8mnEE1/8kmq8SwJYq0yOLh6uqADVfOjF7f3jw1ZkSlSNavazsFZLjg0OZrih1mzB\n\tuwJD06tqEO4bEibKWhd/s2hUBI7DLFhI7/LND7Oh0T87VvAJziGjN6S+m64cHIo9gq\n\tx3H1P0q26mvJhg8SFDlENFY3WHaqzGivVTeX4ZYI=","Message-ID":"<cc1fbf11-5cfd-4c26-b609-23a817d2b307@ideasonboard.com>","Date":"Fri, 15 Aug 2025 17:08:24 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 2/3] utils: codegen: ipc: Default special member\n\tops","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tPaul Elder <paul.elder@ideasonboard.com>","References":"<20250815123138.2213654-1-barnabas.pocze@ideasonboard.com>\n\t<20250815123138.2213654-2-barnabas.pocze@ideasonboard.com>\n\t<20250815145744.GE8360@pendragon.ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20250815145744.GE8360@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]