From: Philippe Proulx Date: Fri, 22 Apr 2022 12:11:22 +0000 (-0400) Subject: src/cpp-common: add bt2_common::align() X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=f38a365f3f9ed3ca44ae7279b4b376b6e79db193 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 --- 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 */