[PATCH v2] libcamera: yaml_parser: Make default value templated in `get()`
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Jun 13 01:11:26 CEST 2024
Hi Barnabás,
Thank you for the patch.
On Wed, Jun 12, 2024 at 10:46:16PM +0000, Barnabás Pőcze wrote:
> This way the construction of the default value of type `T`
> can be delayed until it is really needed, which is useful,
> for example when `T == std::string` and the default value comes
> from a string literal, as the default value string would always
> be constructed otherwise, even if not needed.
>
> Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> Changes in v2:
> * update documentation
>
> ---
> include/libcamera/internal/yaml_parser.h | 6 +++---
> src/libcamera/yaml_parser.cpp | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/libcamera/internal/yaml_parser.h b/include/libcamera/internal/yaml_parser.h
> index b6979d73..3ac27e06 100644
> --- a/include/libcamera/internal/yaml_parser.h
> +++ b/include/libcamera/internal/yaml_parser.h
> @@ -179,10 +179,10 @@ public:
> #endif
> std::optional<T> get() const;
>
> - template<typename T>
> - T get(const T &defaultValue) const
> + template<typename T, typename U>
> + T get(U &&defaultValue) const
> {
> - return get<T>().value_or(defaultValue);
> + return get<T>().value_or(std::forward<U>(defaultValue));
> }
>
> #ifndef __DOXYGEN__
> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp
> index aac9a2bd..b68a44c1 100644
> --- a/src/libcamera/yaml_parser.cpp
> +++ b/src/libcamera/yaml_parser.cpp
> @@ -104,7 +104,7 @@ std::size_t YamlObject::size() const
> */
>
> /**
> - * \fn template<typename T> YamlObject::get<T>(const T &defaultValue) const
> + * \fn template<typename T, typename U> YamlObject::get<T>(U &&defaultValue) const
> * \brief Parse the YamlObject as a \a T value
> * \param[in] defaultValue The default value when failing to parse
> *
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list