[libcamera-devel] [RFC PATCH 01/17] libcamera: base: class: Document Extensible::_d() functions
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Jul 30 04:28:39 CEST 2021
Hi Jacopo,
On Thu, Jul 29, 2021 at 10:05:42PM +0200, Jacopo Mondi wrote:
> On Fri, Jul 23, 2021 at 07:00:20AM +0300, Laurent Pinchart wrote:
> > The Extensible::_d() functions are meant to be called by users of the
> > class. Document them.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> > include/libcamera/base/class.h | 2 --
> > src/libcamera/base/class.cpp | 17 +++++++++++++++++
> > 2 files changed, 17 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/libcamera/base/class.h b/include/libcamera/base/class.h
> > index c2e1d3534ed1..9c7f0f2e6e27 100644
> > --- a/include/libcamera/base/class.h
> > +++ b/include/libcamera/base/class.h
> > @@ -88,7 +88,6 @@ public:
> > Extensible(Private *d);
> >
> > protected:
> > -#ifndef __DOXYGEN__
> > template<typename T>
> > const T *_d() const
> > {
> > @@ -100,7 +99,6 @@ protected:
> > {
> > return static_cast<T *>(d_.get());
> > }
> > -#endif
> >
> > private:
> > const std::unique_ptr<Private> d_;
> > diff --git a/src/libcamera/base/class.cpp b/src/libcamera/base/class.cpp
> > index 26b4967726d6..d0899671ca11 100644
> > --- a/src/libcamera/base/class.cpp
> > +++ b/src/libcamera/base/class.cpp
> > @@ -150,6 +150,23 @@ Extensible::Extensible(Extensible::Private *d)
> > {
> > }
> >
> > +/**
> > + * \fn Extensible::_d() const
> > + * \brief Retrieve the private data instance
> > + *
> > + * This template function isn't meant to be called directly. Instead, classes
> > + * derived from Extensible get, through the LIBCAMERA_DECLARE_PRIVATE() macro,
> > + * overriden _d() functions that return the correct pointer type to the
> > + * corresponding derived Private class.
>
> It really took me a while to understand that we have Extensible::_d()
> and the overriden versions, and it's written just here :)
>
> Probably because the commit message says "are meant to be called by
> users" and this starts with "isn't meant to be called directly" :)
The issue is that the Extensible::_d() function isn't meant to be called
directly, but I haven't found a way to get doxygen to document the
overridden functions generated by LIBCAMERA_DECLARE_PRIVATE(). I've thus
decided to document this in the base Extensible::_d() function as the
best workaround I could find :-S.
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
>
> > + *
> > + * \return A pointer to the private data instance
> > + */
> > +
> > +/**
> > + * \fn Extensible::_d()
> > + * \copydoc Extensible::_d() const
> > + */
> > +
> > /**
> > * \var Extensible::d_
> > * \brief Pointer to the private data instance
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list