src/cpp-common: add bt2_common::align()
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 22 Apr 2022 12:11:22 +0000 (08:11 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Mon, 11 Sep 2023 15:24:02 +0000 (11:24 -0400)
This is a templated C++ version of the BT_ALIGN() macro found in
`src/common/align.h`.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I0062778831d20cf19fe28bfa82c867473f7cf50b
Reviewed-on: https://review.lttng.org/c/babeltrace/+/7928
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/10817

src/cpp-common/Makefile.am
src/cpp-common/align.hpp [new file with mode: 0644]

index f67fcd06e06c57ce277b836f74aa27c0898135b4..607b85ab8241ad0356cd9b24dddf1b9f1ebfad12 100644 (file)
@@ -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 (file)
index 0000000..3a036c8
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2022 Philippe Proulx <pproulx@efficios.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifndef BABELTRACE_CPP_COMMON_ALIGN_HPP
+#define BABELTRACE_CPP_COMMON_ALIGN_HPP
+
+#include <type_traits>
+
+#include "common/align.h"
+
+namespace bt2_common {
+
+template <typename ValT, typename AlignT>
+ValT align(const ValT val, const AlignT align) noexcept
+{
+    static_assert(std::is_unsigned<ValT>::value, "`ValT` is unsigned.");
+    return BT_ALIGN(val, static_cast<ValT>(align));
+}
+
+} /* namespace bt2_common */
+
+#endif /* BABELTRACE_CPP_COMMON_ALIGN_HPP */
This page took 0.024678 seconds and 4 git commands to generate.