diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-10-18 17:02:51 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-10-18 17:02:51 +0000 |
| commit | 849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d (patch) | |
| tree | a5d04d0f19a0bc883425a8461cbbcbe93c8d4d19 /Common/interface | |
| parent | Merge branch 'master' into pso_refactoring (diff) | |
| download | DiligentCore-849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d.tar.gz DiligentCore-849d2758d7b9e0f3b5c1c11ef2f8f7a06d012c2d.zip | |
Implemented Align for pointers; added tests
Diffstat (limited to 'Common/interface')
| -rw-r--r-- | Common/interface/Align.hpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Common/interface/Align.hpp b/Common/interface/Align.hpp index 1d0d43cc..658ec7ca 100644 --- a/Common/interface/Align.hpp +++ b/Common/interface/Align.hpp @@ -30,6 +30,8 @@ /// \file /// Alignment utilities +#include <cstdint> + #include "../../Platforms/Basic/interface/DebugUtilities.hpp" namespace Diligent @@ -49,10 +51,22 @@ inline T Align(T val, T alignment) } template <typename T> +inline T* Align(T* val, size_t alignment) +{ + return reinterpret_cast<T*>(Align(reinterpret_cast<uintptr_t>(val), static_cast<uintptr_t>(alignment))); +} + +template <typename T> inline T AlignDown(T val, T alignment) { VERIFY(IsPowerOfTwo(alignment), "Alignment (", alignment, ") must be power of 2"); return val & ~(alignment - 1); } +template <typename T> +inline T* AlignDown(T* val, size_t alignment) +{ + return reinterpret_cast<T*>(AlignDown(reinterpret_cast<uintptr_t>(val), static_cast<uintptr_t>(alignment))); +} + } // namespace Diligent |
