Show a patch.

GET /api/1.1/patches/20791/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 20791,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/20791/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/20791/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20240805143654.20870-6-laurent.pinchart@ideasonboard.com>",
    "date": "2024-08-05T14:36:41",
    "name": "[v5,05/18] libcamera: Hide *::Private classes with __DOXYGEN_PUBLIC__",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "c1a7dae86e7512bf64ad2c106f9578affc7c67c8",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/20791/mbox/",
    "series": [
        {
            "id": 4488,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4488/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4488",
            "date": "2024-08-05T14:36:36",
            "name": "Split libcamera documentation in public and internal APIs",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/4488/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/20791/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/20791/checks/",
    "tags": {},
    "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 0803DC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 14:37:38 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 96E68633BD;\n\tMon,  5 Aug 2024 16:37:37 +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 82F5163387\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 16:37:24 +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 ED46C581\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 16:36:32 +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=\"ICCxet07\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722868593;\n\tbh=IfyWtTa8yIn6QCZl6VGj/05aOsTlQNTCaR5WUCHzGck=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=ICCxet07Stf7icmZ4/snjS8jSHHaEFW5P/F8A0rWtQmLGfgiS8MbcQbiGhtIYA2lN\n\tBMjd2n5zloGhQKhaAk1uYN1/tB1AG6dpLzXLVjRtMrdk7IHpEy84ij9OjpEU9AiUFn\n\tJwpujR20B95MQlrcoErJhfq+mP2LuLY3KVGrFZDs=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Subject": "[PATCH v5 05/18] libcamera: Hide *::Private classes with\n\t__DOXYGEN_PUBLIC__",
        "Date": "Mon,  5 Aug 2024 17:36:41 +0300",
        "Message-ID": "<20240805143654.20870-6-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.44.2",
        "In-Reply-To": "<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>",
        "References": "<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>",
        "MIME-Version": "1.0",
        "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>"
    },
    "content": "The *::Private classes are part of the internal API, as their name\nimplies. They are defined in internal headers, but implemented in the\nsame source file as their public counterparts. This will cause Doxygen\nto complain about missing class definition when splitting the public and\ninternal API documents, as the internal headers won't be parsed by\nDoxygen for the public API documentation.\n\nMarking the classes with \\internal isn't enough. The directive prevents\nthe documentation block from being included in the output, but this\noccurs at the generation stage, after the documentation blocks are\nparsed. Fix this by completely hidding the implementation of the\n*::Private classes from Doxygen using preprocessor conditional\ncompilation. To do so, introduce a new macro, __DOXYGEN_PUBLIC__, that\nwill be defined for the public API documentation only.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/libcamera/camera.cpp         | 2 ++\n src/libcamera/camera_manager.cpp | 2 ++\n src/libcamera/framebuffer.cpp    | 2 ++\n src/libcamera/request.cpp        | 2 ++\n 4 files changed, 8 insertions(+)",
    "diff": "diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex 3c8f30d54401..aca466c9ba72 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -565,6 +565,7 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF\n  * \\brief The vector of stream configurations\n  */\n \n+#ifndef __DOXYGEN_PUBLIC__\n /**\n  * \\class Camera::Private\n  * \\brief Base class for camera private data\n@@ -725,6 +726,7 @@ void Camera::Private::setState(State state)\n {\n \tstate_.store(state, std::memory_order_release);\n }\n+#endif /* __DOXYGEN_PUBLIC__ */\n \n /**\n  * \\class Camera\ndiff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\nindex 5a21132a08c2..fa44e33a135d 100644\n--- a/src/libcamera/camera_manager.cpp\n+++ b/src/libcamera/camera_manager.cpp\n@@ -35,6 +35,7 @@ namespace libcamera {\n \n LOG_DEFINE_CATEGORY(Camera)\n \n+#ifndef __DOXYGEN_PUBLIC__\n CameraManager::Private::Private()\n \t: initialized_(false)\n {\n@@ -249,6 +250,7 @@ void CameraManager::Private::removeCamera(std::shared_ptr<Camera> camera)\n \tCameraManager *const o = LIBCAMERA_O_PTR();\n \to->cameraRemoved.emit(camera);\n }\n+#endif /* __DOXYGEN_PUBLIC__ */\n \n /**\n  * \\class CameraManager\ndiff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp\nindex f39db1223432..826848f75a56 100644\n--- a/src/libcamera/framebuffer.cpp\n+++ b/src/libcamera/framebuffer.cpp\n@@ -107,6 +107,7 @@ LOG_DEFINE_CATEGORY(Buffer)\n  * \\return The array of per-plane metadata\n  */\n \n+#ifndef __DOXYGEN_PUBLIC__\n /**\n  * \\class FrameBuffer::Private\n  * \\brief Base class for FrameBuffer private data\n@@ -209,6 +210,7 @@ FrameBuffer::Private::~Private()\n  * \\brief Retrieve the dynamic metadata\n  * \\return Dynamic metadata for the frame contained in the buffer\n  */\n+#endif /* __DOXYGEN_PUBLIC__ */\n \n /**\n  * \\class FrameBuffer\ndiff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\nindex 24fa3a57312e..8c56ed30d0c4 100644\n--- a/src/libcamera/request.cpp\n+++ b/src/libcamera/request.cpp\n@@ -38,6 +38,7 @@ namespace libcamera {\n \n LOG_DEFINE_CATEGORY(Request)\n \n+#ifndef __DOXYGEN_PUBLIC__\n /**\n  * \\class Request::Private\n  * \\brief Request private data\n@@ -306,6 +307,7 @@ void Request::Private::timeout()\n \n \temitPrepareCompleted();\n }\n+#endif /* __DOXYGEN_PUBLIC__ */\n \n /**\n  * \\enum Request::Status\n",
    "prefixes": [
        "v5",
        "05/18"
    ]
}