From 05f7d581bee6323522f6b9c9843f87d3d8bff070 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 23 Jan 2024 17:30:43 +0000 Subject: [PATCH] cpp-common/bt2c: add `bt2c::IsOneOf` trait Add the `bt2c::IsOneOf` trait, which is used to check if a type is in a list of types. Change-Id: If95ebc542d0581afb3411fcaece6617bb4946612 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/11708 Reviewed-by: Philippe Proulx --- src/Makefile.am | 1 + src/cpp-common/bt2c/type-traits.hpp | 40 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/cpp-common/bt2c/type-traits.hpp diff --git a/src/Makefile.am b/src/Makefile.am index dc046d9e..148520ce 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -56,6 +56,7 @@ noinst_HEADERS = \ cpp-common/bt2c/read-fixed-len-int.hpp \ cpp-common/bt2c/safe-ops.hpp \ cpp-common/bt2c/std-int.hpp \ + cpp-common/bt2c/type-traits.hpp \ cpp-common/bt2c/uuid.hpp \ cpp-common/bt2c/vector.hpp \ cpp-common/bt2s/make-unique.hpp \ diff --git a/src/cpp-common/bt2c/type-traits.hpp b/src/cpp-common/bt2c/type-traits.hpp new file mode 100644 index 00000000..da8e0e04 --- /dev/null +++ b/src/cpp-common/bt2c/type-traits.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 Philippe Proulx + * + * SPDX-License-Identifier: MIT + */ + +#ifndef BABELTRACE_CPP_COMMON_BT2C_TYPE_TRAITS_HPP +#define BABELTRACE_CPP_COMMON_BT2C_TYPE_TRAITS_HPP + +#include + +namespace bt2c { + +/* + * Provides the member constant `value` equal to: + * + * `T` is in the list of types `Ts`: + * `true` + * + * Otherwise: + * `false` + */ +template +struct IsOneOf : std::false_type +{ +}; + +template +struct IsOneOf : std::true_type +{ +}; + +template +struct IsOneOf : IsOneOf +{ +}; + +} /* namespace bt2c */ + +#endif /* BABELTRACE_CPP_COMMON_BT2C_TYPE_TRAITS_HPP */ -- 2.34.1