[PATCH v5 05/18] libcamera: Hide *::Private classes with __DOXYGEN_PUBLIC__

Dan Scally dan.scally at ideasonboard.com
Wed Aug 7 10:08:59 CEST 2024


Hi Laurent

On 05/08/2024 15:36, Laurent Pinchart wrote:
> The *::Private classes are part of the internal API, as their name
> implies. They are defined in internal headers, but implemented in the
> same source file as their public counterparts. This will cause Doxygen
> to complain about missing class definition when splitting the public and
> internal API documents, as the internal headers won't be parsed by
> Doxygen for the public API documentation.
>
> Marking the classes with \internal isn't enough. The directive prevents
> the documentation block from being included in the output, but this
> occurs at the generation stage, after the documentation blocks are
> parsed. Fix this by completely hidding the implementation of the
> *::Private classes from Doxygen using preprocessor conditional
> compilation. To do so, introduce a new macro, __DOXYGEN_PUBLIC__, that
> will be defined for the public API documentation only.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>


This is fine too - I think I included them because I couldn't figure out a doxygen-only way of 
excluding them...but this way works.


Reviewed-by: Daniel Scally <dan.scally at ideasonboard.com>

> ---
>   src/libcamera/camera.cpp         | 2 ++
>   src/libcamera/camera_manager.cpp | 2 ++
>   src/libcamera/framebuffer.cpp    | 2 ++
>   src/libcamera/request.cpp        | 2 ++
>   4 files changed, 8 insertions(+)
>
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index 3c8f30d54401..aca466c9ba72 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -565,6 +565,7 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF
>    * \brief The vector of stream configurations
>    */
>   
> +#ifndef __DOXYGEN_PUBLIC__
>   /**
>    * \class Camera::Private
>    * \brief Base class for camera private data
> @@ -725,6 +726,7 @@ void Camera::Private::setState(State state)
>   {
>   	state_.store(state, std::memory_order_release);
>   }
> +#endif /* __DOXYGEN_PUBLIC__ */
>   
>   /**
>    * \class Camera
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index 5a21132a08c2..fa44e33a135d 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -35,6 +35,7 @@ namespace libcamera {
>   
>   LOG_DEFINE_CATEGORY(Camera)
>   
> +#ifndef __DOXYGEN_PUBLIC__
>   CameraManager::Private::Private()
>   	: initialized_(false)
>   {
> @@ -249,6 +250,7 @@ void CameraManager::Private::removeCamera(std::shared_ptr<Camera> camera)
>   	CameraManager *const o = LIBCAMERA_O_PTR();
>   	o->cameraRemoved.emit(camera);
>   }
> +#endif /* __DOXYGEN_PUBLIC__ */
>   
>   /**
>    * \class CameraManager
> diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
> index f39db1223432..826848f75a56 100644
> --- a/src/libcamera/framebuffer.cpp
> +++ b/src/libcamera/framebuffer.cpp
> @@ -107,6 +107,7 @@ LOG_DEFINE_CATEGORY(Buffer)
>    * \return The array of per-plane metadata
>    */
>   
> +#ifndef __DOXYGEN_PUBLIC__
>   /**
>    * \class FrameBuffer::Private
>    * \brief Base class for FrameBuffer private data
> @@ -209,6 +210,7 @@ FrameBuffer::Private::~Private()
>    * \brief Retrieve the dynamic metadata
>    * \return Dynamic metadata for the frame contained in the buffer
>    */
> +#endif /* __DOXYGEN_PUBLIC__ */
>   
>   /**
>    * \class FrameBuffer
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index 24fa3a57312e..8c56ed30d0c4 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -38,6 +38,7 @@ namespace libcamera {
>   
>   LOG_DEFINE_CATEGORY(Request)
>   
> +#ifndef __DOXYGEN_PUBLIC__
>   /**
>    * \class Request::Private
>    * \brief Request private data
> @@ -306,6 +307,7 @@ void Request::Private::timeout()
>   
>   	emitPrepareCompleted();
>   }
> +#endif /* __DOXYGEN_PUBLIC__ */
>   
>   /**
>    * \enum Request::Status


More information about the libcamera-devel mailing list