From f38a365f3f9ed3ca44ae7279b4b376b6e79db193 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Fri, 22 Apr 2022 08:11:22 -0400 Subject: [PATCH] src/cpp-common: add bt2_common::align() This is a templated C++ version of the BT_ALIGN() macro found in `src/common/align.h`. Signed-off-by: Philippe Proulx Change-Id: I0062778831d20cf19fe28bfa82c867473f7cf50b Reviewed-on: https://review.lttng.org/c/babeltrace/+/7928 Tested-by: jenkins Reviewed-on: https://review.lttng.org/c/babeltrace/+/10817 --- src/cpp-common/Makefile.am | 3 ++- src/cpp-common/align.hpp | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/cpp-common/align.hpp diff --git a/src/cpp-common/Makefile.am b/src/cpp-common/Makefile.am index f67fcd06..607b85ab 100644 --- a/src/cpp-common/Makefile.am +++ b/src/cpp-common/Makefile.am @@ -14,4 +14,5 @@ EXTRA_DIST = bt2 \ uuid-view.hpp \ endian.hpp \ make-unique.hpp \ - safe-ops.hpp + safe-ops.hpp \ + align.hpp diff --git a/src/cpp-common/align.hpp b/src/cpp-common/align.hpp new file mode 100644 index 00000000..3a036c88 --- /dev/null +++ b/src/cpp-common/align.hpp @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 Philippe Proulx + * + * SPDX-License-Identifier: MIT + */ + +#ifndef BABELTRACE_CPP_COMMON_ALIGN_HPP +#define BABELTRACE_CPP_COMMON_ALIGN_HPP + +#include + +#include "common/align.h" + +namespace bt2_common { + +template +ValT align(const ValT val, const AlignT align) noexcept +{ + static_assert(std::is_unsigned::value, "`ValT` is unsigned."); + return BT_ALIGN(val, static_cast(align)); +} + +} /* namespace bt2_common */ + +#endif /* BABELTRACE_CPP_COMMON_ALIGN_HPP */ -- 2.34.1