[{"id":30633,"web_url":"https://patchwork.libcamera.org/comment/30633/","msgid":"<93049bef-e5ab-4279-a278-f44c6f6bc4d3@ideasonboard.com>","date":"2024-08-06T15:06:25","subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","submitter":{"id":156,"url":"https://patchwork.libcamera.org/api/people/156/","name":"Dan Scally","email":"dan.scally@ideasonboard.com"},"content":"Hi Laurent\n\nOn 05/08/2024 15:36, Laurent Pinchart wrote:\n> The libcamera public API exposes classes that have parts considered\n> internal. They inherit the Extensible class, and their internal parts\n> are split into a Private class. Those classes are defined in public API\n> headers, and their Private counterparts are defined in internal headers\n> sharing a common file name (in a different directory). Both headers are\n> documented in the same source file.\n>\n> For instance, include/libcamera/camera.h contains the public API of the\n> Camera class, and include/libcamera/internal/camera.h its internal\n> counterpart. Both are documented in src/libcamera/camera.cpp.\n>\n> As the internal headers are not part of the public API, they need to be\n> hidden from the future public API builds. To prepare for doing so, mark\n> them with the \\internal Doxygen directive. Hardcode the Doxygen\n> INTERNAL_DOCS option to YES to include the internal API. This will be\n> changed later for the public API documentation build.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n\n\nReviewed-by: Daniel Scally <dan.scally@ideasonboard.com>\n\n>   Documentation/Doxyfile.in        | 1 +\n>   src/libcamera/camera.cpp         | 1 +\n>   src/libcamera/camera_manager.cpp | 1 +\n>   src/libcamera/framebuffer.cpp    | 5 ++++-\n>   src/libcamera/request.cpp        | 1 +\n>   5 files changed, 8 insertions(+), 1 deletion(-)\n>\n> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> index abafcf6c6c66..62e63968ce62 100644\n> --- a/Documentation/Doxyfile.in\n> +++ b/Documentation/Doxyfile.in\n> @@ -17,6 +17,7 @@ EXTENSION_MAPPING      = h=C++\n>   \n>   TOC_INCLUDE_HEADINGS   = 0\n>   \n> +INTERNAL_DOCS          = YES\n>   CASE_SENSE_NAMES       = YES\n>   \n>   QUIET                  = YES\n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index f89510ea0472..3c8f30d54401 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -118,6 +118,7 @@\n>    */\n>   \n>   /**\n> + * \\internal\n>    * \\file libcamera/internal/camera.h\n>    * \\brief Internal camera device handling\n>    */\n> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> index 95a9e3264526..5a21132a08c2 100644\n> --- a/src/libcamera/camera_manager.cpp\n> +++ b/src/libcamera/camera_manager.cpp\n> @@ -23,6 +23,7 @@\n>    */\n>   \n>   /**\n> + * \\internal\n>    * \\file libcamera/internal/camera_manager.h\n>    * \\brief Internal camera manager support\n>    */\n> diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp\n> index 63d679cb504d..f39db1223432 100644\n> --- a/src/libcamera/framebuffer.cpp\n> +++ b/src/libcamera/framebuffer.cpp\n> @@ -16,7 +16,10 @@\n>   /**\n>    * \\file libcamera/framebuffer.h\n>    * \\brief Frame buffer handling\n> - *\n> + */\n> +\n> +/**\n> + * \\internal\n>    * \\file libcamera/internal/framebuffer.h\n>    * \\brief Internal frame buffer handling support\n>    */\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index fdf12c1e9088..24fa3a57312e 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -29,6 +29,7 @@\n>    */\n>   \n>   /**\n> + * \\internal\n>    * \\file libcamera/internal/request.h\n>    * \\brief Internal support for request handling\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 9EDEDC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  6 Aug 2024 15:06:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C34526337C;\n\tTue,  6 Aug 2024 17:06:29 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0B09B6195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  6 Aug 2024 17:06:28 +0200 (CEST)","from [192.168.0.43]\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B683C4CD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  6 Aug 2024 17:05:35 +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=\"lVf/hk8Z\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722956735;\n\tbh=2/H0hl0NME7ENeiAuQclAEbm3E8IORWaQwonCvnymug=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=lVf/hk8ZIxXqFKklfo/x/rVmOy2SSnzF52i0v3nHNqHMRuMQOSJ2rv9hR18A20Guo\n\trjHjb+WCeJr5VXwTvcHSoW7EDTNDrhPoglMyC7smCmjvTbrIID1xPFRURB3puFb5yH\n\tNgSkeMURoNwnPI4Ld/eLqPvb4YzKLD89M4x3zkcE=","Message-ID":"<93049bef-e5ab-4279-a278-f44c6f6bc4d3@ideasonboard.com>","Date":"Tue, 6 Aug 2024 16:06:25 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","To":"libcamera-devel@lists.libcamera.org","References":"<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>\n\t<20240805143654.20870-5-laurent.pinchart@ideasonboard.com>","Content-Language":"en-US","From":"Dan Scally <dan.scally@ideasonboard.com>","Autocrypt":"addr=dan.scally@ideasonboard.com; keydata=\n\t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","In-Reply-To":"<20240805143654.20870-5-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":30641,"web_url":"https://patchwork.libcamera.org/comment/30641/","msgid":"<172300740094.1507574.15715229736191295991@ping.linuxembedded.co.uk>","date":"2024-08-07T05:10:00","subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2024-08-05 15:36:40)\n> The libcamera public API exposes classes that have parts considered\n> internal. They inherit the Extensible class, and their internal parts\n> are split into a Private class. Those classes are defined in public API\n> headers, and their Private counterparts are defined in internal headers\n> sharing a common file name (in a different directory). Both headers are\n> documented in the same source file.\n> \n> For instance, include/libcamera/camera.h contains the public API of the\n> Camera class, and include/libcamera/internal/camera.h its internal\n> counterpart. Both are documented in src/libcamera/camera.cpp.\n> \n> As the internal headers are not part of the public API, they need to be\n> hidden from the future public API builds. To prepare for doing so, mark\n> them with the \\internal Doxygen directive. Hardcode the Doxygen\n> INTERNAL_DOCS option to YES to include the internal API. This will be\n> changed later for the public API documentation build.\n\nShould all internal headers state this \\internal directive? Or only\nclasses which share documentation with both public and internal API?\n\nI don't object, but it might be easier to be consistent or not miss\ncomponents if all internal headers are marked to doxygen with the\ndirective.\n\nThat said, we'd probably be able to pick it up as we develop if\nsomething was in the public docs that we wanted to move out so it's not\ncritical:\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  Documentation/Doxyfile.in        | 1 +\n>  src/libcamera/camera.cpp         | 1 +\n>  src/libcamera/camera_manager.cpp | 1 +\n>  src/libcamera/framebuffer.cpp    | 5 ++++-\n>  src/libcamera/request.cpp        | 1 +\n>  5 files changed, 8 insertions(+), 1 deletion(-)\n> \n> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> index abafcf6c6c66..62e63968ce62 100644\n> --- a/Documentation/Doxyfile.in\n> +++ b/Documentation/Doxyfile.in\n> @@ -17,6 +17,7 @@ EXTENSION_MAPPING      = h=C++\n>  \n>  TOC_INCLUDE_HEADINGS   = 0\n>  \n> +INTERNAL_DOCS          = YES\n>  CASE_SENSE_NAMES       = YES\n>  \n>  QUIET                  = YES\n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index f89510ea0472..3c8f30d54401 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -118,6 +118,7 @@\n>   */\n>  \n>  /**\n> + * \\internal\n>   * \\file libcamera/internal/camera.h\n>   * \\brief Internal camera device handling\n>   */\n> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> index 95a9e3264526..5a21132a08c2 100644\n> --- a/src/libcamera/camera_manager.cpp\n> +++ b/src/libcamera/camera_manager.cpp\n> @@ -23,6 +23,7 @@\n>   */\n>  \n>  /**\n> + * \\internal\n>   * \\file libcamera/internal/camera_manager.h\n>   * \\brief Internal camera manager support\n>   */\n> diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp\n> index 63d679cb504d..f39db1223432 100644\n> --- a/src/libcamera/framebuffer.cpp\n> +++ b/src/libcamera/framebuffer.cpp\n> @@ -16,7 +16,10 @@\n>  /**\n>   * \\file libcamera/framebuffer.h\n>   * \\brief Frame buffer handling\n> - *\n> + */\n> +\n> +/**\n> + * \\internal\n>   * \\file libcamera/internal/framebuffer.h\n>   * \\brief Internal frame buffer handling support\n>   */\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index fdf12c1e9088..24fa3a57312e 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -29,6 +29,7 @@\n>   */\n>  \n>  /**\n> + * \\internal\n>   * \\file libcamera/internal/request.h\n>   * \\brief Internal support for request handling\n>   */\n> -- \n> Regards,\n> \n> Laurent Pinchart\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 2E6B1C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Aug 2024 05:10:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 764696337C;\n\tWed,  7 Aug 2024 07:10: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 3D0636195A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Aug 2024 07:10:04 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 943082EC;\n\tWed,  7 Aug 2024 07:09:11 +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=\"Lul495jB\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723007351;\n\tbh=Ln3Kk0UFfLvF7EzgN3AIw8EtTbjVzSHa+YoZCpcgFlk=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=Lul495jBudo6pRxiB298K+HLMr1tnJDSVRQyhTMkGJlaY1Van8TC6CHCAMkVxjAPH\n\ta7PhecYAbygA6IwPG/N9y+FZZCaaRhGVIu2plyj23Q25ZwIEWPnNNehuUD1j9MwwNT\n\t0SgnWPS9bcgFw0+kBTx2VNMS9YvV6uRVsSMS5NtY=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240805143654.20870-5-laurent.pinchart@ideasonboard.com>","References":"<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>\n\t<20240805143654.20870-5-laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 07 Aug 2024 06:10:00 +0100","Message-ID":"<172300740094.1507574.15715229736191295991@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":30674,"web_url":"https://patchwork.libcamera.org/comment/30674/","msgid":"<20240807130058.GC15173@pendragon.ideasonboard.com>","date":"2024-08-07T13:00:58","subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Wed, Aug 07, 2024 at 06:10:00AM +0100, Kieran Bingham wrote:\n> Quoting Laurent Pinchart (2024-08-05 15:36:40)\n> > The libcamera public API exposes classes that have parts considered\n> > internal. They inherit the Extensible class, and their internal parts\n> > are split into a Private class. Those classes are defined in public API\n> > headers, and their Private counterparts are defined in internal headers\n> > sharing a common file name (in a different directory). Both headers are\n> > documented in the same source file.\n> > \n> > For instance, include/libcamera/camera.h contains the public API of the\n> > Camera class, and include/libcamera/internal/camera.h its internal\n> > counterpart. Both are documented in src/libcamera/camera.cpp.\n> > \n> > As the internal headers are not part of the public API, they need to be\n> > hidden from the future public API builds. To prepare for doing so, mark\n> > them with the \\internal Doxygen directive. Hardcode the Doxygen\n> > INTERNAL_DOCS option to YES to include the internal API. This will be\n> > changed later for the public API documentation build.\n> \n> Should all internal headers state this \\internal directive? Or only\n> classes which share documentation with both public and internal API?\n\nThe .cpp files that are internal are not included in the public\ndocumentation build, so \\internal will not make any difference in them.\n\n> I don't object, but it might be easier to be consistent or not miss\n> components if all internal headers are marked to doxygen with the\n> directive.\n\nI'm OK if we prefer going that way, it can be done on top.\n\n> That said, we'd probably be able to pick it up as we develop if\n> something was in the public docs that we wanted to move out so it's not\n> critical:\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  Documentation/Doxyfile.in        | 1 +\n> >  src/libcamera/camera.cpp         | 1 +\n> >  src/libcamera/camera_manager.cpp | 1 +\n> >  src/libcamera/framebuffer.cpp    | 5 ++++-\n> >  src/libcamera/request.cpp        | 1 +\n> >  5 files changed, 8 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> > index abafcf6c6c66..62e63968ce62 100644\n> > --- a/Documentation/Doxyfile.in\n> > +++ b/Documentation/Doxyfile.in\n> > @@ -17,6 +17,7 @@ EXTENSION_MAPPING      = h=C++\n> >  \n> >  TOC_INCLUDE_HEADINGS   = 0\n> >  \n> > +INTERNAL_DOCS          = YES\n> >  CASE_SENSE_NAMES       = YES\n> >  \n> >  QUIET                  = YES\n> > diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> > index f89510ea0472..3c8f30d54401 100644\n> > --- a/src/libcamera/camera.cpp\n> > +++ b/src/libcamera/camera.cpp\n> > @@ -118,6 +118,7 @@\n> >   */\n> >  \n> >  /**\n> > + * \\internal\n> >   * \\file libcamera/internal/camera.h\n> >   * \\brief Internal camera device handling\n> >   */\n> > diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> > index 95a9e3264526..5a21132a08c2 100644\n> > --- a/src/libcamera/camera_manager.cpp\n> > +++ b/src/libcamera/camera_manager.cpp\n> > @@ -23,6 +23,7 @@\n> >   */\n> >  \n> >  /**\n> > + * \\internal\n> >   * \\file libcamera/internal/camera_manager.h\n> >   * \\brief Internal camera manager support\n> >   */\n> > diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp\n> > index 63d679cb504d..f39db1223432 100644\n> > --- a/src/libcamera/framebuffer.cpp\n> > +++ b/src/libcamera/framebuffer.cpp\n> > @@ -16,7 +16,10 @@\n> >  /**\n> >   * \\file libcamera/framebuffer.h\n> >   * \\brief Frame buffer handling\n> > - *\n> > + */\n> > +\n> > +/**\n> > + * \\internal\n> >   * \\file libcamera/internal/framebuffer.h\n> >   * \\brief Internal frame buffer handling support\n> >   */\n> > diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> > index fdf12c1e9088..24fa3a57312e 100644\n> > --- a/src/libcamera/request.cpp\n> > +++ b/src/libcamera/request.cpp\n> > @@ -29,6 +29,7 @@\n> >   */\n> >  \n> >  /**\n> > + * \\internal\n> >   * \\file libcamera/internal/request.h\n> >   * \\brief Internal support for request handling\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 AE3E5C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Aug 2024 13:01:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6699263394;\n\tWed,  7 Aug 2024 15:01:22 +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 5AAE86337E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Aug 2024 15:01:21 +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 ESMTPSA id 787672EC;\n\tWed,  7 Aug 2024 15:00:28 +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=\"SfV8fGTg\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723035628;\n\tbh=W2hHkCMKXeCCjQ3bgQXRrAGcRDHko5QWnyO5/tdQxE0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=SfV8fGTgHLC7PIxmlqHzuETd9zNpStlwGIsm90KjWI8AVOzT50kX4aD1cmFKQhgpg\n\tqNLOWZRII5u/Se3/jkzihrEDvAk7ZES5yQwCeYB9GzQxJ19gxyXWQA4J/Fv+4ecD0f\n\t82gFdV96vagkcFsEJGpsb+uFbUp+TIEv8wwzxTj4=","Date":"Wed, 7 Aug 2024 16:00:58 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v5 04/18] libcamera: Mark internal parts of public\n\tclasses with \\internal","Message-ID":"<20240807130058.GC15173@pendragon.ideasonboard.com>","References":"<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>\n\t<20240805143654.20870-5-laurent.pinchart@ideasonboard.com>\n\t<172300740094.1507574.15715229736191295991@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<172300740094.1507574.15715229736191295991@ping.linuxembedded.co.uk>","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>"}}]