Преглед на файлове

common: alignment: Add a helper function for generic alignment checking.

bunnei преди 6 години
родител
ревизия
b838e58d63
променени са 1 файла, в които са добавени 7 реда и са изтрити 0 реда
  1. 7 0
      src/common/alignment.h

+ 7 - 0
src/common/alignment.h

@@ -38,6 +38,13 @@ constexpr bool IsWordAligned(T value) {
     return (value & 0b11) == 0;
     return (value & 0b11) == 0;
 }
 }
 
 
+template <typename T>
+constexpr bool IsAligned(T value, std::size_t alignment) {
+    using U = typename std::make_unsigned<T>::type;
+    const U mask = static_cast<U>(alignment - 1);
+    return (value & mask) == 0;
+}
+
 template <typename T, std::size_t Align = 16>
 template <typename T, std::size_t Align = 16>
 class AlignmentAllocator {
 class AlignmentAllocator {
 public:
 public: