[libcamera-devel] [PATCH v2 02/14] libcamera: control_ids: Fix documentation for controls namespace

Niklas Söderlund niklas.soderlund at ragnatech.se
Sun Oct 13 17:20:36 CEST 2019


Hi Laurent,

Thanks for your patch.

On 2019-10-12 21:43:55 +0300, Laurent Pinchart wrote:
> The controls namespace isn't documenting, making it impossible to
> reference the variables it contains. Furthermore, within the
> documentation page for the control_ids.h file, links from overview to
> detailed variable documentation are broken for the same reason. Both
> issues can be fixed by documenting the controls namespace.
> 
> Unfortunately doxygen then fails to parse the initialisers for the
> controls global variables correctly and considers them as functions. To
> work around this, modify the control_ids.cpp generation script to hide
> the variables from doxygen, but still expose their documentation.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  src/libcamera/control_ids.cpp.in | 13 ++++++++++++-
>  src/libcamera/gen-controls.py    | 18 ++++++++++++------
>  2 files changed, 24 insertions(+), 7 deletions(-)
> 
> diff --git a/src/libcamera/control_ids.cpp.in b/src/libcamera/control_ids.cpp.in
> index f699ac9eea54..dd5433820a8b 100644
> --- a/src/libcamera/control_ids.cpp.in
> +++ b/src/libcamera/control_ids.cpp.in
> @@ -16,9 +16,20 @@
>  
>  namespace libcamera {
>  
> +/**
> + * \brief Namespace for libcamera controls
> + */
>  namespace controls {
>  
> -${controls}
> +${controls_doc}
> +
> +#ifndef __DOXYGEN__
> +/*
> + * Keep the controls definitions hidden from doxygen as it incorrectly parses
> + * them as functions.
> + */
> +${controls_def}
> +#endif
>  
>  } /* namespace controls */
>  
> diff --git a/src/libcamera/gen-controls.py b/src/libcamera/gen-controls.py
> index 0899e40b4080..a3e52fb36f7a 100755
> --- a/src/libcamera/gen-controls.py
> +++ b/src/libcamera/gen-controls.py
> @@ -17,12 +17,14 @@ def snake_case(s):
>  
>  
>  def generate_cpp(controls):
> -    template = string.Template('''/**
> +    doc_template = string.Template('''/**
> + * \\var extern const Control<${type}> ${name}
>  ${description}
> - */
> -extern const Control<${type}> ${name}(${id_name}, "${name}");''')
> + */''')
> +    def_template = string.Template('extern const Control<${type}> ${name}(${id_name}, "${name}");')
>  
> -    ctrls = []
> +    ctrls_doc = []
> +    ctrls_def = []
>  
>      for ctrl in controls:
>          name, ctrl = ctrl.popitem()
> @@ -39,9 +41,13 @@ extern const Control<${type}> ${name}(${id_name}, "${name}");''')
>              'id_name': id_name,
>          }
>  
> -        ctrls.append(template.substitute(info))
> +        ctrls_doc.append(doc_template.substitute(info))
> +        ctrls_def.append(def_template.substitute(info))
>  
> -    return {'controls': '\n\n'.join(ctrls)}
> +    return {
> +        'controls_doc': '\n\n'.join(ctrls_doc),
> +        'controls_def': '\n'.join(ctrls_def),
> +    }
>  
>  
>  def generate_h(controls):
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list