[libcamera-devel] [PATCH 1/2] libcamera: Add macro to conditionally use [[nodiscard]]

Niklas Söderlund niklas.soderlund at ragnatech.se
Thu Feb 4 09:48:28 CET 2021


Hi Laurent,

Thanks for your work.

On 2021-02-04 05:59:50 +0200, Laurent Pinchart wrote:
> The [[nodiscard]] attribute has been added to C++17. It can thus be used
> inside libcamera, but would prevent applications compiled for C++14 to
> use libcamera if the attribute was used in public headers.
> 
> To offer this feature when the application is compiled with a
> recent-enough C++ version, as well as for compiling libcamera itself,
> add a __nodiscard macro that expands as [[nodiscard]] when using C++17
> or newer.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

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

> ---
>  include/libcamera/compiler.h  | 16 ++++++++++++++++
>  include/libcamera/meson.build |  1 +
>  2 files changed, 17 insertions(+)
>  create mode 100644 include/libcamera/compiler.h
> 
> diff --git a/include/libcamera/compiler.h b/include/libcamera/compiler.h
> new file mode 100644
> index 000000000000..dc56dbb8b792
> --- /dev/null
> +++ b/include/libcamera/compiler.h
> @@ -0,0 +1,16 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2021, Google Inc.
> + *
> + * compiler.h - Compiler support
> + */
> +#ifndef __LIBCAMERA_COMPILER_H__
> +#define __LIBCAMERA_COMPILER_H__
> +
> +#if __cplusplus >= 201703L
> +#define __nodiscard		[[nodiscard]]
> +#else
> +#define __nodiscard
> +#endif
> +
> +#endif /* __LIBCAMERA_COMPILER_H__ */
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index cf2935f1ee95..13e9eeb6d6ad 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -5,6 +5,7 @@ libcamera_public_headers = files([
>      'buffer.h',
>      'camera.h',
>      'camera_manager.h',
> +    'compiler.h',
>      'controls.h',
>      'extensible.h',
>      'file_descriptor.h',
> -- 
> 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