From 6dfa2040820d44584a1c5430f42dfc9b1ea56c9a Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Tue, 26 Jan 2021 23:38:05 +0200 Subject: libcamera: Add macro to conditionally use [[nodiscard]] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- 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 00000000..dc56dbb8 --- /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 cf2935f1..13e9eeb6 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', -- cgit v1.2.1